hi,
 i've tried to build xerces-c 3.1.1 with icu support.

 first, i compiled icu 4.8.1 (OUT_DIR 'points' to 
/home/nikola/vincorex_development):

 ./runConfigureICU Linux --prefix=${OUT_DIR}
 make && make install

 ICU is built and installed in ${OUT_DIR}

 now i've tried to build xerces-3.1.1:
 ./configure --prefix=${OUT_DIR} --disable-rpath --enable-msgloader-inmemory 
--enable-transcoder-icu --with-icu=${OUT_DIR}
 make && make install

 xerces is built and installed in ${OUT_DIR}; but ldd on resulting xerces-c.so 
does not show dependency on ICU located in ${OUT_DIR}. LD_LIBRARY_PATH is set 
to ${OUT_DIR}/lib.
 after few (re)tries, i tried on older compiler (4.5.2) and everything went 
fine.

 problematic part is as follows:

 (from config.log)
........................
 g++ -o conftest -g -O2 -I/home/nikola/vincorex_development/include -lpthread 
-ldl -lm -L/home/nikola/vincorex_development/lib -licui18n -licuuc -licudata 
-lpthread -ldl -lm  *conftest.cpp* -lnsl -lpthread
 /tmp/ccxSIK6a.o: In function `main':
 /tmp/conftest.cpp:109: undefined reference to `ucnv_open_48'
 collect2: ld returned 1 exit status
........................

 reason for this check to fail lies is parameter ordering; for example this 
line runs fine:

g++ -o conftest -g -O2 -I/home/nikola/vincorex_development/include  
*conftest.cpp* -lpthread -ldl -lm -L/home/nikola/vincorex_development/lib 
-licui18n -licuuc -licudata -lpthread -ldl -lm -lnsl -lpthread

this is because i've moved conftest.cpp before library search part (if i'm not 
mistaking, this conforms to GCC)

 i've found this on hard way, hope it will help to someone else. since i dont 
know autotools, i did not wanted to change autofiles, rather i created virtual 
machine hosting older Ubuntu with older GCC and build there

 best regards
 nikola

Reply via email to