Hi,

I am trying several days now to build a .dll on cygwin.
But it only wants to build a static library :(.

What am I doing wrong?


Here is what happens, this is supposed to create a dll:

$ make libcw.la
if /bin/bash ./libtool --mode=compile g++ -DHAVE_CONFIG_H  -I./include -I./include   
-g -pipe -Wall -Woverloaded-virtual -Wundef -Wpointer-arith -Wwrite-strings -Werror 
-Winline  -MT libcw_la-version.lo -MD -MP -MF ".deps/libcw_la-version.Tpo" \
  -c -o libcw_la-version.lo `test -f 'version.cc' || echo './'`version.cc; \
then mv -f ".deps/libcw_la-version.Tpo" ".deps/libcw_la-version.Plo"; \
else rm -f ".deps/libcw_la-version.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I./include -I./include -g -pipe -Wall -Woverloaded-virtual 
-Wundef -Wpointer-arith -Wwrite-strings -Werror -Winline -MT libcw_la-version.lo -MD 
-MP -MF .deps/libcw_la-version.Tpo -c version.cc  -DPIC -o .libs/libcw_la-version.o

[
 comment: the above is correctly creating a pic-object; after all - we are trying
 to create a dll.  Note that this results in the following lines in the
 created libcw_la-version.lo file:
 pic_object='.libs/libcw_la-version.o'
 non_pic_object=none
]

/bin/bash ./libtool --mode=link g++     -o libcw.la -rpath /usr/local/lib 
-version-info 0:0:0 libcw_la-version.lo llists/libllists.la crosslink/libcrosslink.la 
io/libio.la kernel/libkernel.la net/libnet.la

[
 comment: this seems correct too no?  .la as output, .lo and .la as input
]

libtool: link: warning: undefined symbols not allowed in i686-pc-cygwin shared 
libraries

[
 What is this?  Of course I have undefined symbols: the ones of libc and libstdc++ ?!
]

rm -fr  .libs/libcw.a .libs/libcw.la .libs/libcw.lai
rm -fr .libs/libcw.lax
mkdir .libs/libcw.lax
rm -fr .libs/libcw.lax/libllists.a
mkdir .libs/libcw.lax/libllists.a
(cd .libs/libcw.lax/libllists.a && ar x /usr/src/libcw/llists/.libs/libllists.a)
rm -fr .libs/libcw.lax/libcrosslink.a
mkdir .libs/libcw.lax/libcrosslink.a
(cd .libs/libcw.lax/libcrosslink.a && ar x 
/usr/src/libcw/crosslink/.libs/libcrosslink.a)
rm -fr .libs/libcw.lax/libio.a
mkdir .libs/libcw.lax/libio.a
(cd .libs/libcw.lax/libio.a && ar x /usr/src/libcw/io/.libs/libio.a)
rm -fr .libs/libcw.lax/libkernel.a
mkdir .libs/libcw.lax/libkernel.a
(cd .libs/libcw.lax/libkernel.a && ar x /usr/src/libcw/kernel/.libs/libkernel.a)
rm -fr .libs/libcw.lax/libnet.a
mkdir .libs/libcw.lax/libnet.a
(cd .libs/libcw.lax/libnet.a && ar x /usr/src/libcw/net/.libs/libnet.a)
ar cru .libs/libcw.a  .libs/libcw.lax/libllists.a/cbll.o 
.libs/libcw.lax/libllists.a/expire.o .libs/libcw.lax/libllists.a/sbll.o  
.libs/libcw.lax/libcrosslink.a/crosslink.o  .libs/libcw.lax/libio.a/dbstreambuf.o 
.libs/libcw.lax/libio.a/file.o .libs/libcw.lax/libio.a/pipe.o 
.libs/libcw.lax/libio.a/sock.o .libs/libcw.lax/libio.a/traits.o  
.libs/libcw.lax/libkernel.a/debugdaemon.o .libs/libcw.lax/libkernel.a/events.o 
.libs/libcw.lax/libkernel.a/execve.o .libs/libcw.lax/libkernel.a/GlobalObjectManager.o 
.libs/libcw.lax/libkernel.a/libcw_app.o .libs/libcw.lax/libkernel.a/memleak.o 
.libs/libcw.lax/libkernel.a/ostream_operators.o .libs/libcw.lax/libkernel.a/select.o 
.libs/libcw.lax/libkernel.a/signals.o .libs/libcw.lax/libkernel.a/support.o 
.libs/libcw.lax/libkernel.a/timing.o  .libs/libcw.lax/libnet.a/inet_support.o
ranlib .libs/libcw.a
rm -fr .libs/libcw.lax
creating libcw.la
(cd .libs && rm -f libcw.la && ln -s ../libcw.la libcw.la)


Ok, I am totally lost ...
Why does it suddenly create a .libs/libcw.a ?
Where is the .dll?

Also, this *.a is not usable because the libcw_la-version.lo is NOT linked in:
that only refers to a pic-object, not a non-pic-object.  The result is a
useless (broken) static library.

Can someone please tell me what I am doing wrong?
I suppose you need more info, but I don't know what :)

-- 
Carlo Wood <[EMAIL PROTECTED]>


_______________________________________________
Libtool mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/libtool

Reply via email to