Hi,
I'm trying to compile Xml Security for the Android platform (arm) but I get:
checking Xerces version... OK
configure: error: unable to link with Xerces
when running ./configure. Before that, I have obviously compiled Xerces
(and ICU) for the same platform so it should be able to link. I think it
might be going somewhere wrong with Xerces linking to ICU because of what
the error messages say but it's XML security failing so I'm posting it here.
Any help would be appreciated.
I run the configure for xml sec with he following parameters:
./configure --without-xalan \
--without-nss \
--host=arm-linux-androideabi \
--with-xerces=$PWD/../xerces-c-3.1.4/build-androideabi \
--with-openssl=$PWD/../openssl-fips-wrapper/build-androideabi \
--with-glob=$PWD/../android-glob/build-androideabi/ \
--prefix=$PWD/build-androideabi \
--enable-debug \
CFLAGS='-Os -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \
CXXFLAGS='-std=c++11 -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \
LDFLAGS=' -march=armv7-a -Wl,--fix-cortex-a8' \
CC=arm-linux-androideabi-clang \
CXX=arm-linux-androideabi-clang++ \
AR=arm-linux-androideabi-ar \
RINLIB=arm-linux-androideabi-ranlib
And the more detailed error messages from config.log are:
.../xml-security-c-1.7.3/../xerces-c-3.1.4/build-androideabi/lib/libxerces-c.a(ICUTransService.o):xercesc/util/Transcoders/ICU/ICUTransService.cpp:function
xercesc_3_1::ICUTransService::makeNewXMLTranscoder(unsigned short const*,
xercesc_3_1::XMLTransService::Codes&, unsigned int,
xercesc_3_1::MemoryManager*): error: undefined reference to 'ucnv_openU_58'
.../xml-security-c-1.7.3/../xerces-c-3.1.4/build-androideabi/lib/libxerces-c.a(ICUTransService.o):xercesc/util/Transcoders/ICU/ICUTransService.cpp:function
xercesc_3_1::ICUTranscoder::ICUTranscoder(unsigned short const*,
UConverter*, unsigned int, xercesc_3_1::MemoryManager*): error: undefined
reference to 'ucnv_getMaxCharSize_58'
.../xml-security-c-1.7.3/../xerces-c-3.1.4/build-androideabi/lib/libxerces-c.a(ICUTransService.o):xercesc/util/Transcoders/ICU/ICUTransService.cpp:function
xercesc_3_1::ICUTranscoder::ICUTranscoder(unsigned short const*,
UConverter*, unsigned int, xercesc_3_1::MemoryManager*): error: undefined
reference to 'ucnv_getMinCharSize_58'
and a lot more other linking errors from Xerces classes
like ICULCPTranscoder, ICUTranscoder and RangeToken.
Also, just for complete information, I was compiling Xerces with those
parameters:
./configure --disable-shared \
--host=arm-linux-androideabi \
--disable-pretty-make \
--enable-transcoder-icu \
--with-icu=$PWD/../icu/armv7a/prebuilt \
--prefix=$PWD/build-androideabi \
CFLAGS='-Os -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \
CXXFLAGS='-std=c++11 -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \
LDFLAGS='-march=armv7-a -Wl,--fix-cortex-a8' \
CC=arm-linux-androideabi-clang \
CXX=arm-linux-androideabi-clang++ \
AR=arm-linux-androideabi-ar \
RINLIB=arm-linux-androideabi-ranlib
Regards,
Mateusz