android - 如何在 GCC 中使用来自不同路径的 C 库

标签 android gcc android-ndk cross-compiling

我正在使用 Android NDK GCC 工具链将项目编译为命令行。 我的 gcc 位置是

/opt/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc

我正在使用 gcc 选项

--sysroot=/opt/android-ndk/platforms/android-8/arch-arm/

构建Hello World时没有问题。但是对于这个项目,在链接期间,它会产生错误:

/opt/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld:
crtbegin_static.o: No such file: No such file or directory

实际上,“crtbegin_static.o”位于

/opt/android-ndk/platforms/android-8/arch-arm/usr/lib

如果我把它放在

/opt/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3

那么这个问题就可以解决了。

有没有办法让 gcc 正确定位 crtbegin_static.o

最佳答案

最后,我找到了解决方案。可以通过将“--sysroot=”选项再次传递给链接器来解决,而不仅仅是编译器,使用

-Wl,--sysroot=/opt/android-ndk/platforms/android-8/arch-arm/

关于android - 如何在 GCC 中使用来自不同路径的 C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9551836/

相关文章:

java - 如何将焦点设置到操作栏上的标题?

android - 淡入 Android 启动 Activity

c++ - 使编译器在类型删除中使用 lambda 优化函数调用间接

c++ - 使用 mprotect 保护整个地址空间

android - Here-api离线 map 安装

java - Android:手机 hibernate 时 Wi-Fi 强度不会改变

c++ - 使用-static-libstdc++ 构建应用程序和共享库时出现段错误

linux - 在 ubuntu 上构建 ndk (ndk-r10b) 示例

带有 NDK-Build 的 Android Studio - 不在项目导航器中显示 C++ 文件

android - SpatialLite for Android NDK Geos 配置错误