Fail on linking with Xerces-C when building for Android

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Fail on linking with Xerces-C when building for Android

Mateusz Dyda
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Fail on linking with Xerces-C when building for Android

Mateusz Dyda
I've solved it by disabling renaming in ICU configuration.

Regards,
Mateusz

On 7 November 2016 at 10:24, Mateusz Dyda <[hidden email]> wrote:
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

Loading...