This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: link error
Moon Hwang wrote:
> I make my own library using this makefile.
You might consider using automake and libtool, which takes care of all
this for you.
> SONAME := lib$(TARGET)$(MODI).so
.so is not the universal extension for shared libraries. Under windows
(and Cygwin) it's .dll, under darwin it's .dylib, and so on. You really
shouldn't hardcode this information and expect to have a portable
makefile.
Under Cygwin the normal convention is that for a library named "foo" the
shared library is cygfoo.dll and the import libray is libfoo.dll.a. If
it is a versioned library then it is cygfoo-n.dll and libfoo-n.dll.a.
> g++ -I /usr/X11R6/include -I ../../../Include -I
> /usr/local/include/boost_1_32_0 -L /usr/X11R6/lib -L
> /home/MHHwang/lib/Release Bomb.cpp -o Bomb -lxyDEVS -lpthread
>
> /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:
> cannot find -lxyDEVS
> collect2: ld returned 1 exit status
Under Cygwin, when you specify -lxyDEVS, the linker will search for the
following filenames (in this order):
libxyDEVS.dll.a
xyDEVS.dll.a
libxyDEVS.a
cygxyDEVS.dll
libxyDEVS.dll
xyDEVS.dll
(As documented at
<http://sourceware.org/binutils/docs-2.16/ld/WIN32.html#WIN32>.)
So of course it errors because .so is not tne correct extension under
Cygwin. You can still link against a .so file but you will probably
have to specify its full filename like with other link objects, as
opposed to -lfoo.
Brian