Date: Fri, 20 Oct 2000 13:58:40 -0400 From: Joe Diehl <jdiehl@genuity.net> To: freebsd-questions@freebsd.org Subject: linking oddness Message-ID: <20001020135840.P11549@genuity.net>
next in thread | raw e-mail | index | archive | help
I was wondering if someone can help me out here, seeing as I'm now rather lost. I'm having problems with linking libraries that I install in /usr/local/lib. For instance: $ LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/X11R6/lib:/lib $ export LD_LIBRARY_PATH $ gcc -o test test.o -ljpeg /usr/libexec/elf/ld: cannot find -ljpeg $ gcc -o test test.o -L/usr/local/lib -ljpeg $ ldd test test: libjpeg.so.62 => /usr/local/lib/libjpeg.so.62 (0x28064000) libc.so.4 => /usr/lib/libc.so.4 (0x28082000) jdiehl@eros:~$ ls /usr/local/lib/libjpeg* /usr/local/lib/libjpeg.a /usr/local/lib/libjpeg.so /usr/local/lib/libjpeg.la /usr/local/lib/libjpeg.so.62 /usr/local/lib/libjpeg.lai /usr/local/lib/libjpeg.so.9 I'm running FreeBSD 4.1.1-RELEASE I havn't fiddled with gcc/binutils at all: jdiehl@eros:~$ gcc -v Using builtin specs. gcc version 2.95.2 19991024 (release) jdiehl@eros:~$ ld -v GNU ld version 2.10.0 (with BFD 2.10.0) Because of these problems I've tried fiddling with /etc/ld{,-elf}.so.conf: jdiehl@eros:~$ cat /etc/ld-elf.so.conf /usr/lib /usr/lib/compat /usr/X11R6/lib /usr/local/lib jdiehl@eros:~$ cat /etc/ld.so.conf /usr/lib/compat/aout /usr/X11R6/lib/aout /usr/local/lib/aout /usr/lib/compath /usr/X11R6/lib /usr/local/lib I did do an `ldconfig -aout; ldconfig -elf` Note that this isn't limited to libjpeg: jdiehl@eros:~$ gcc -o test test.o -ltiff /usr/libexec/elf/ld: cannot find -ltiff jdiehl@eros:~$ gcc -o test test.o -lXau /usr/libexec/elf/ld: cannot find -lXau jdiehl@eros:~$ gcc -o test test.o -lX11 /usr/libexec/elf/ld: cannot find -lX11 Now for some fun with truss: $ truss ld -o test test.o -lc -ljpeg 2>&1 | grep libjpeg open("/usr/lib/libjpeg.so",0,0666) ERR#2 'No such file or directory' open("/usr/lib/libjpeg.a",0,0666) ERR#2 'No such file or directory' $ truss ld -o test test.o -lc -ljpeg 2>&1 | grep libc\. access("/usr/local/lib/libc.so.4",0) ERR#2 'No such file or directory' access("/usr/lib/libc.so.4",0) = 0 (0x0) open("/usr/lib/libc.so.4",0,027757774730) = 3 (0x3) open("/usr/lib/libc.so",0,0666) = 5 (0x5) Right so.. It'll look for libc in /usr/local/lib like my LD_LIBRARY_PATH asks; however, it ignores my LD_LIBRARY_PATH for libjpeg? I notice that FreeBSD uses ld.so.conf for a.out and ld-elf.so.conf for elf binaries, is there something differant I need for elf linking besides LD_LIBRARY_PATH? From the ld(1) manpage: -Lsearchdir This command adds path searchdir to the list of paths that ld will search for archive libraries. You may use this option any number of times. The default set of paths searched (without being specified with -L) depends on what emulation mode ld is using, and in some cases also on how it was configured. The paths can also be specified in a link script with the SEARCH_DIR command. Ok so I'm going to try this, though I'm not sure about exactly sure what format is expected in SEARCH_DIR: $ SEARCH_DIR="/usr/local/lib:/usr/lib:/usr/X11R6/lib" $ export SEARCH_DIR $ gcc -o test test.o -ljpeg /usr/libexec/elf/ld: cannot find -ljpeg $ SEARCH_DIR="-L/usr/local/lib" $ export SEARCH_DIR $ gcc -o test test.o -ljpeg /usr/libexec/elf/ld: cannot find -ljpeg Any thoughts? I'm not on this list, so please cc: any replies to me. Thanks :) -- Joe Diehl (jdiehl@genuity.net) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001020135840.P11549>