2012-01-28 32 views
5

Mọi người đã có thể xây dựng PCRE (hoặc tập hợp con) bằng cách sao chép các tệp nguồn và tạo Andriod.mk thích hợp. Tôi muốn làm tương tự, nhưng bằng cách sử dụng một toolchain độc lập Android và chỉ sử dụng cấu hình của họ và làm cho quá trình. Tôi đã thành công trong việc xây dựng các thư viện hữu ích khác bằng cách sử dụng cùng một luồng, nhưng đang gặp sự cố với PCRE. Cụ thể, vào cuối làm chảy Tôi nhận được lỗi này:Liên kết lỗi cho PCRE khi sử dụng chuỗi công cụ độc lập NDK của Android

undefined reference to__dso_handle' .libs/pcre_stringpiece.o 

Khi làm điều này,

/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' 

Bất kỳ suy nghĩ về vấn đề là gì và những gì các giải pháp là gì? Tôi đọc những điều khác nhau về các vấn đề tương tự, nhưng chúng hầu như không hữu ích hoặc không rõ ràng nếu chúng liên quan đến cùng một vấn đề.

Cập nhật 1: Tôi thấy rằng vấn đề này không xảy ra khi tôi sử dụng chuỗi công cụ độc lập mặc định. Nó chỉ xảy ra khi tôi sử dụng một sửa đổi như mô tả ở đây: http://specificimpulses.blogspot.com/2011/10/android-fortran-step-by-step-part-2.html Tôi cần phải sử dụng nó để xây dựng các thư viện khác bao gồm fortran (và đã thực hiện thành công) và muốn sử dụng cùng một chuỗi công cụ cho tất cả các bản dựng. Vì vậy, tôi cần phải xây dựng lại toolchain với một số tùy chọn khác nhau?

+0

Vui lòng cho tôi một gợi ý về cách giải quyết vấn đề này. Hoặc, tốt hơn, tạo một chuỗi công cụ độc lập dựa trên liên kết tôi đã cung cấp và sử dụng nó để xây dựng pcre. Tạo lại lỗi và tìm hiểu xem phải làm gì để khắc phục sự cố. Tôi tin rằng tôi cần phải xây dựng lại gcc với các tùy chọn khác nhau để có được bằng cách này, nhưng không chắc chắn như thế nào được nêu ra. – corbin

+0

Vui lòng xem http://stackoverflow.com/questions/8831227/how-to-build-or-where-to-get-an-android-ndk-stand-alone-toolchain-supporting-for – corbin

Trả lời

1

Có vẻ như -fno-use-cxa-atexit là giải pháp có thể chấp nhận được.

Các vấn đề liên quan