Can I specify where g++looks for libs at runtime?
Marc Glisse
marc.glisse@normalesup.org
Mon Jun 29 14:05:00 GMT 2009
On Mon, 29 Jun 2009, Dr. David Kirkby wrote:
> --with-libiconv-prefix=/usr/lib/iconv
What's that for? Either you use GNU libiconv or you use libc,
/usr/lib/iconv is just some private libc data.
> I find the C compiler works ok. But the C++ compiler can't find its own
> library files.
Not the C++ compiler, executables created by said compiler.
> kirkby@t2:[~] $ gcc hello_world.c
> kirkby@t2:[~] $ ./a.out
> hello world
> kirkby@t2:[~] $ g++ test.cpp
> kirkby@t2:[~] $ ./a.out
> ld.so.1: a.out: fatal: libstdc++.so.6: open failed: No such file or directory
> Killed
>
> I'm using the Sun linker, not the GNU one, so it's possible g++ is sending
> stuff to the linker to indicate where the libraries are, but the linker is
> ignoring them.
>
> Ideally I'd like to send something to the Sun linker to day "look in
> /usr/local/gcc-4.4.0-sun-linker/lib for libraries too"
You can use the specs file to change the flags passed by gcc to the
linker. gcc -dumpspecs shows the default values and truss will show you
where gcc expects to find a specs file overriding these values. You could
add some -R/my/path in there (depending on m64/m32), which I think is what
Sun currently does in Solaris, although it means LD_RUN_PATH will be
ignored (I think Sun's compiler actually parses this variable to simulate
its effect, but that's too much work for gcc). You could instead add -c
my.config to make the program use an alternate ld.config (created with
crle) which hardcodes a different standard search path for libraries.
--
Marc Glisse
More information about the Gcc-help
mailing list