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