Android ndk Android NDK r5b外部构建和supc++;链接问题 我试图在Ubuntu 10.10上使用R5B NDK来为Android平台跨编译C++代码库(使用CMAGE)。编译阶段成功,但是在的最后链接阶段。因此,libsupc++.a文件(我指定链接到)中有许多未解析的符号引用。我也尝试了-lsupc++而没有任何区别

Android ndk Android NDK r5b外部构建和supc++;链接问题 我试图在Ubuntu 10.10上使用R5B NDK来为Android平台跨编译C++代码库(使用CMAGE)。编译阶段成功,但是在的最后链接阶段。因此,libsupc++.a文件(我指定链接到)中有许多未解析的符号引用。我也尝试了-lsupc++而没有任何区别,android-ndk,android-ndk-r5,Android Ndk,Android Ndk R5,在构建test-gnustl-1ndk测试应用程序时,我尝试尽可能地遵循官方ndk构建系统生成的命令行 在arm linux AndroidAbi/lib/libsupc++上运行arm linux AndroidAbi nm工具。一个文件显示错误输出中引用的定义符号(T) 在libsupc++中定义的符号的一个例子是:\uuuuugxx\uv0 这是我的示例链接行和由此产生的错误示例 /home/user/android-ndk-r5b/toolschains/arm-linux-androi

在构建test-gnustl-1ndk测试应用程序时,我尝试尽可能地遵循官方ndk构建系统生成的命令行

在arm linux AndroidAbi/lib/libsupc++上运行arm linux AndroidAbi nm工具。一个文件显示错误输出中引用的定义符号(T)

在libsupc++中定义的符号的一个例子是:
\uuuuugxx\uv0

这是我的示例链接行和由此产生的错误示例

/home/user/android-ndk-r5b/toolschains/arm-linux-androideabi-4.4.3/prebuilded/linux-x86/bin/arm-linux-androideabi-g++-fPIC-Wall-Wextra-Wno unused-Wno multichar-fno rtti-MMD-MP-MF-ffunction sections-feexceptions-funwind tables-Wno psabi-march=armv5te-mtune=xscale-msoft float-mthumb-fomit框架指针-fno严格别名-finline limit=64-Wa,-noexecstack-DANDROID-DĂu ARMĂu ARCHĂu-DĂu ARMĂu ARCHĂeĂu-DĂu ARMĂu teĂu-O0-DDEBUG-DĂDEBUG-g--sysroot=/home/user/android-ndk-r5b/platforms/android-9/ARCH ARM-Wl-gc-gc sections-Wl-Wl,--Wl-Wl-Wl-Wl,--Wl,--z,nocopyrc-z,--Wl,noexecstack-L/home/user/android-ndk-r5b/platforms/android-9/arch-arm/usr/lib-L/home/user/android-ndk-r5b/toolschains/arm-linux-androideabi-4.4.3/prebuild/linux-x86/arm-linux-androideabi/lib-Wl,-rpath link=/home/user/android-ndk-r5b/platforms/android-9/arch-arm/usr/lib/home/user/android-ndk-r5b/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libstdc++.a-lc-lsupc++-shared-o..//lib/Debug/libFoo.so-cmakfiles/Foo.dir/Foo.c.o-cmakfiles/Foo.dir/Bar.cpp.o cmakfiles/Baz.cpp.o

`CMakeFiles/Foo.dir/Foo.cpp.o: In function 'myFunc':
/home/user/myroj/src/native/modules/libFoo/Foo.cpp:292: undefined reference to '__cxa_end_cleanup'
CMakeFiles/Foo.dir/Foo.cpp.o:(.ARM.extab.text.myFunc+0x0): undefined reference to '__gxx_personality_v0'
...
/home/user/android-ndk-r5b/toolchains/android/sources/cxx-stl/gnu-libstdc++/include/bits/vector.tcc:350: undefined reference to '__cxa_begin_catch'
/home/user/android-ndk-r5b/toolchains/android/sources/cxx-stl/gnu-libstdc++/include/bits/vector.tcc:357: undefined reference to '__cxa_rethrow'
/home/user/android-ndk-r5b/toolchains/android/sources/cxx-stl/gnu-libstdc++/include/bits/stl_vector.h:1153: undefined reference to 'std::__throw_length_error(char const*)'
/home/user/android-ndk-r5b/toolchains/android/sources/cxx-stl/gnu-libstdc++/include/bits/stl_tree.h:199: undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
...
我试图创建一个简单的hello world应用程序,它在一个简单的.a文件中使用异常和链接。在我直接链接libsupc++.a库而不是使用'-lsupc++'之前,我也遇到了相同的错误。然而,同样的技术在更大的项目链接步骤中不起作用。NDK文档还建议在使用外部构建工具时使用“-lsupc++”

我对如何解决这个连接问题没有想法。我尝试了尽可能多的方法重新排列链接线。我知道链接通常是一个易变的过程。
非常感谢您的帮助。

事实证明,我需要将
-L/home/user/android-ndk-r5b/sources/cxx stl/gnu libstdc++/libs/armeabi“
添加到路径并显式链接”/
home/user/android-ndk-r5b/toolschains/arm-linux-androideabi-4.4.3/prebuild/linux-x86/arm-linux-androideabi/lib/thumb/libsupc++.a
将所有包含库包装在“
--start group--end group
”子句中

希望这对其他人也有帮助