[xml] libxml2 on cygwin



Hello,

I want to share my solution on compiling program that using libxml2 on cygwin.
Cygwin already prebuild libxml2 package. However while compiling my 
application, i've got error undefine reference during linking stage. I've 
search all over the web but didn't get solution to my problem.

--------------- problem during compiling my applicaiton --------------------
$ make -f Makefile-cygwin
gcc -g -I/usr/include/libxml2 -DWINDOWS -o ald.o -c ald.c
gcc -g -I/usr/include/libxml2 -L/usr/lib -lxml2 -lz -liconv -lm -o ald ald.o
ald.o(.text+0x1217): In function `parseProjfile':
ald-v0.7/ald.c:392: undefined reference to `_xmlParseFile'
ald.o(.text+0x1256):ald-v0.7/ald.c:397: undefined reference to 
`_xmlDocGetRootElement'
ald.o(.text+0x1282):ald-v0.7/ald.c:401: undefined reference to `_xmlFreeDoc'
ald.o(.text+0x12a4):ald-v0.7/ald.c:405: undefined reference to `_xmlStrcmp'
ald.o(.text+0x12cb):ald-v0.7/ald.c:407: undefined reference to `_xmlFreeDoc'
ald.o(.text+0x138d): In function `parseData':
ald-v0.7/ald.c:429: undefined reference to `_xmlStrcmp'
ald.o(.text+0x13da):ald-v0.7/ald.c:434: undefined reference to 
`_xmlNodeListGetString'
ald.o(.text+0x13f3):ald-v0.7/ald.c:435: undefined reference to `_xmlStrcmp'
collect2: ld returned 1 exit status
make: *** [ald] Error 1
---------------------------- end -------------------------

xml2-config output:
$ xml2-config --libs
-L/usr/lib -lxml2 -lz -liconv -lm

$ xml2-config --cflags
-I/usr/include/libxml2

part of content file: /usr/lib/libxml2.la
--------------- snap -------------------
# The name that we can dlopen(3).
dlname='../bin/cygxml2-2.dll'

# Names of this library.
library_names='libxml2.dll.a'
-------------- snip ------------------
As described in libxml2.la file, the dlname='../bin/cygxml2-2.dll' which 
located in /usr/bin/cygxml2-2.dll. However the actual cygxml2-2.dll file 
located at /bin and not at /usr/bin.

So i've changed /usr/lib/libxml2.la file into:
--------------- snap -------------------
# The name that we can dlopen(3).
dlname='/bin/cygxml2-2.dll'

# Names of this library.
library_names='libxml2.dll.a'
-------------- snip ------------------

Then i've also add options "--dll-search-prefix=cyg -L/bin -lxml2-2" during 
linking process.
--------------- compilation success with no error ----------------
$ make -f Makefile-cygwin
gcc -g -I/usr/include/libxml2 -DWINDOWS -o ald.o -c ald.c
gcc -g -I/usr/include/libxml2 -L/usr/lib -lxml2 -lz -liconv -lm 
--dll-search-prefix=cyg -L/bin -lxml2-2 -o ald ald.o
---------------- end -------------------------

Hopefully, this solutions will help other peoples that face same problem with 
me. Good luck.

regards,
-- 
Mohamed Kamil Mansor
Axiomatic Solutions Sdn Bhd
Block F1, UPM-MTDC Technology Incubation Center One,
Lebuh Silikon, 43400 Serdang, Selangor.
Telephone: +603-86567824        Fax: +603-86567827
E-mail: kamil axiomsol com
Website: http://www.axiomsol.com

---
[This E-mail scanned for viruses by Declude AntiVirus]




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]