Confused about linking

Mattias Brändström thebrasse@brasse.org
Mon Aug 9 16:33:00 GMT 2004


Hello!

I am seriously confused when it comes to linking my executable written 
in C++. More specificaly I want to link againts boost_thread and 
boost_regex on a Fedora 2 system.

These files are located in /usr/lib:

/usr/lib/libboost_thread.so.1
/usr/lib/libboost_thread.so.1.31.0
/usr/lib/libboost_regex.a
/usr/lib/libboost_regex.so.1.31.0
/usr/lib/libboost_regex.so.1

I have a small file named 'foo.cpp' containing the following:

int main()
{
   return 0;
}

When I try the following:

g++ foo.cpp -L/usr/lib -lboost_regex

everthing works fine. But when I do this:

g++ foo.cpp -L/usr/lib -lboost_thread

I get:

/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status

When removing /usr/lib/libboost_regex.a I get the same error as above 
when trying to 'g++ foo.cpp -L/usr/lib -lboost_regex'.

I was under the impression that g++ would look for shared librarires and 
try to link againt them first and if that didn't work try to link againt 
static libraries. Perhaps this is not tha case? Can someone enlighten me 
on this, probalbly trivial, issue?

Thanks in advance!

:.:: mattias

PS.
 > g++ -v foo.cpp -L/usr/lib -lboost_thread

Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man 
--infodir=/usr/share/info --enable-shared --enable-threads=posix 
--disable-checking --disable-libunwind-exceptions --with-system-zlib 
--enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
gcc version 3.3.3 20040412 (Red Hat Linux 3.3.3-7)
  /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/cc1plus -quiet -v 
-D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=3 -D_GNU_SOURCE 
foo.cpp -D__GNUG__=3 -quiet -dumpbase foo.cpp -auxbase foo -version -o 
/tmp/cccCYtHd.s
GNU C++ version 3.3.3 20040412 (Red Hat Linux 3.3.3-7) (i386-redhat-linux)
         compiled by GNU C version 3.3.3 20040412 (Red Hat Linux 3.3.3-7).
GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64549
ignoring nonexistent directory "/usr/i386-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
  /usr/include/c++/3.3.3
  /usr/include/c++/3.3.3/i386-redhat-linux
  /usr/include/c++/3.3.3/backward
  /usr/local/include
  /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include
  /usr/include
End of search list.
  as -V -Qy -o /tmp/ccqqpjhi.o /tmp/cccCYtHd.s
GNU assembler version 2.15.90.0.3 (i386-redhat-linux) using BFD version 
2.15.90.0.3 20040415
  /usr/lib/gcc-lib/i386-redhat-linux/3.3.3/collect2 --eh-frame-hdr -m 
elf_i386 -dynamic-linker /lib/ld-linux.so.2 
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/../../../crt1.o 
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/../../../crti.o 
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/crtbegin.o -L/usr/lib 
-L/usr/lib/gcc-lib/i386-redhat-linux/3.3.3 
-L/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/../../.. /tmp/ccqqpjhi.o 
-lboost_thread -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc 
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/crtend.o 
/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/../../../crtn.o
/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status



More information about the Gcc-help mailing list