2012-01-28 118 views
5

人們已經能夠通過複製源文件並創建適當的Andriod.mk來構建PCRE(或其子集)。我想做類似的事情,但是使用Android獨立工具鏈,並使用它們的配置和製作過程。我已經成功地使用相同的流程來構建其他有用的庫,但是遇到PCRE的問題。具體而言,在後期的化妝流量我收到此錯誤:使用Android NDK獨立工具鏈鏈接失敗的PCRE

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的其他庫(並已成功完成),並且希望對所有構建使用相同的工具鏈。那麼,我是否需要用一些不同的選項來重建工具鏈?

+0

請給我一個關於如何解決這個問題的提示。或者,更好的是,根據我給出的鏈接創建一個獨立的工具鏈,並用它來構建pcre。重新創建錯誤並找出解決問題的方法。我相信我需要用不同的選項來重建gcc來獲得這個效果,但是還不確定。 – corbin 2012-02-04 07:13:21

+0

請參閱http://stackoverflow.com/questions/8831227/how-to-build-or-where-to-get-an-android-ndk-stand-alone-toolchain-supporting-for – corbin 2012-02-04 07:14:51

回答

1

看起來像-fno-use-cxa-atexit是一個可以接受的解決方法。