使用Android NDK独立工具链时,链接PCRE失败

时间:2012-01-28 20:52:40

标签: android linker android-ndk

人们已经能够通过复制源文件和创建适当的Andriod.mk来构建PCRE(或其子集)。我想做类似的事情,但使用Android独立工具链,只使用他们的配置和制作过程。我已经使用相同的流程成功构建了其他有用的库,但是我遇到了PCRE的问题。具体来说,在make flow的后期,我收到了这个错误:

undefined reference to__dso_handle' .libs/pcre_stringpiece.o

这样做时,

/bin/bash ./libtool --tag=CXX   --mode=link arm-linux-androideabi-g++  -O2 -version-info 0:0:0                             -o libpcrecpp.la -rpath /usr/local/lib pcrecpp.lo pcre_scanner.lo pcre_stringpiece.lo libpcre.la 
libtool: link: arm-linux-androideabi-g++  -fPIC -DPIC -shared -nostdlib   .libs/pcrecpp.o .libs/pcre_scanner.o .libs/pcre_stringpiece.o   -Wl,-rpath -Wl,/home/corbin/applications/pcre-8.21/.libs ./.libs/libpcre.so -L/home/corbin/my-android-toolchain-mod/bin/../lib/gcc/arm-linux-androideabi/4.7.0 -L/home/corbin/my-android-toolchain-mod/bin/../lib/gcc -L/home/corbin/my-android-toolchain-mod/bin/../lib/gcc/arm-linux-androideabi/4.7.0/../../../../arm-linux-androideabi/lib -L/home/corbin/my-android-toolchain-mod/bin/../sysroot/usr/lib -lstdc++ -lm -lc -ldl -lgcc   -O2   -Wl,-soname -Wl,libpcrecpp.so.0 -o .libs/libpcrecpp.so.0.0.0
.libs/pcrecpp.o: In function `_GLOBAL__sub_I_pcrecpp.cc':
pcrecpp.cc:(.text.startup+0x94): undefined reference to `__dso_handle'
.libs/pcre_stringpiece.o: In function `_GLOBAL__sub_I_pcre_stringpiece.cc':
pcre_stringpiece.cc:(.text.startup+0x40): undefined reference to `__dso_handle'
collect2: error: ld returned 1 exit status
make[1]: *** [libpcrecpp.la] Error 1
make[1]: Leaving directory `/home/corbin/applications/pcre-8.21'

关于问题是什么以及解决方案是什么的任何想法?我阅读了有关类似问题的各种事情,但它们大多没有帮助,或者不清楚它们是否与同一问题有关。

更新1:我发现当我使用默认的独立工具链时不会发生此问题。它只会在我使用如此处所述的修改过的时候发生:http://specificimpulses.blogspot.com/2011/10/android-fortran-step-by-step-part-2.html 我需要使用那个来构建包含fortran的其他库(并且已成功完成)并且希望对所有构建使用相同的工具链。那么,我是否需要使用一些不同的选项重建工具链?

1 个答案:

答案 0 :(得分:1)

看起来-fno-use-cxa-atexit是一种可接受的解决方法。