You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@santuario.apache.org by Mateusz Dyda <ma...@gmail.com> on 2016/11/07 10:24:07 UTC

Fail on linking with Xerces-C when building for Android

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

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

Posted by Mateusz Dyda <ma...@gmail.com>.
I've solved it by disabling renaming in ICU configuration.

Regards,
Mateusz

On 7 November 2016 at 10:24, Mateusz Dyda <ma...@gmail.com> 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
>