problem installing libiconv-1.9.2

Dave Korn dk@artimi.com
Mon Apr 19 16:13:00 GMT 2004


> -----Original Message-----
> From: cygwin-owner On Behalf Of Steve Kelem
> Sent: 19 April 2004 16:42

> What's the trick to getting libiconv to install?  If I try to 
> do "make 
> install" from tcsh, I get the message:
>  /bin/install -c -m 644 .libs/cygiconv-2.dll $dldir/cygiconv-2.dll
> /bin/install: cannot remove `/usr/lib/../bin/cygiconv-2.dll': 
> Permission 
> denied

  That would suggest that the dll cannot be deleted because it is still
currently in use by some application.  But it could just be that the perms
on it are wrong.  "make install" often requires admin (root) rights to run
completely, depending on the particular package you're building and the .
 
> I assume that this is because I'm using cygwin/tcsh.

  Well, does tcsh use cygiconv-2.dll?  That would really explain the problem
if it did.  But it turns out not to, at least not directly:

dk@mace /usr/bin> cygcheck tcsh.exe
Found: .\tcsh.exe
Found: C:\cygwin\bin\tcsh.exe
tcsh.exe
  .\cygncurses7.dll
    .\cygwin1.dll
      C:\WINDOWS\System32\ADVAPI32.DLL
        C:\WINDOWS\System32\ntdll.dll
        C:\WINDOWS\System32\KERNEL32.dll
        C:\WINDOWS\System32\RPCRT4.dll
dk@mace /usr/bin>

  So 1) either the permissions on it are wrong for the username you're
running as at "make install" time, or 2) some *other* cygwin application
(got any cygrunsrv services installed by any chance?) is still keeping it
open.  If you get really desparate, use something like Process explorer or
Handle from sysinternals.com to find out what process is keeping a handle to
the dll open.

> The main reason I'm trying to recompile iconv is because 
> after building 
> gd-2.0.22, I cannot get the perl module GD-2.12 to link, so 
> I'm trying 
> to build a more recent copy (1.9.2) of libiconv:
> 
> gcc -shared -o  GD.dll -Wl,--out-implib=libGD.dll.a 
> -Wl,--export-all-symbols -Wl,--enable-auto-import 
> -Wl,--stack,8388608 \
> -s -L/usr/local/lib GD.o  
> /usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/libperl.dll.a 
> -L/usr/X11R6/lib -L/usr/X11/lib -L/usr/local/lib -lgd -lpng -lz 
> -lfreetype -ljpeg -lm -lX11 -lXpm

  I don't think a more recent version of libiconv is going to help your
basic problem here, which is that you haven't actually told gcc to link
libiconv into the application!  I'd expect to see a "-lcygiconv-2" option
somewhere in that command if you expect it to actually work......!

> Creating library file: libGD.dll.a
> /bin/../lib/gcc-lib/i686-pc-cygwin/3.3.1/../../../libgd.a(gdka
> nji.o)(.text+0x707): 
> In function `do_convert':
> /usr/local/src/gd-2.0.22/gdkanji.c:380: undefined reference to 
> `_libiconv_open'
> /bin/../lib/gcc-lib/i686-pc-cygwin/3.3.1/../../../libgd.a(gdka
> nji.o)(.text+0x74c):/usr/local/src/gd-2.0.22/gdkanji.c:394: 
> undefined reference to `_libiconv'
> /bin/../lib/gcc-lib/i686-pc-cygwin/3.3.1/../../../libgd.a(gdka
> nji.o)(.text+0x757):/usr/local/src/gd-2.0.22/gdkanji.c:415: 
> undefined reference to `_libiconv_close'
> collect2: ld returned 1 exit status
> perlld: *** system() failed to execute

  When you're missing fairly fundamental entry points, such as libiconv_open
or libiconv_close in this case, you should probably be able to deduce that
'open' and 'close' aren't advanced features that only recently got added to
libiconv, which in turn should have given you the clue that maybe you
weren't actually linking against it at all......


    cheers, 
      DaveK
-- 
Can't think of a witty .sigline today....


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list