我想使用来自:http ://rwiki.sciviews.org/doku.php?id=getting-started:installation:android 的交叉编译的 gcc 。
我想在 Android 设备上编译并在 Android 设备上执行生成的文件,所以我在 ARM for ARM 上编译。
我读到这个交叉编译的 gcc 应该可以工作。
我正在像这样调用编译器:
gcc_dir/bin/arm-elf-linux-androideabi-gcc -Lgcc_dir/lib -Igcc_dir/include test.c
但我收到错误:
WARNING: generic atexit() called from legacy shared library
soinfo_link_image(linker.cpp:1635): could not load library "libmpc.so.2" needed by "/package.appName/files/gcc/bin/../libexec
/gcc/arm-elf-linux-androideabi/4.6.0/cc1";
caused by load_library(linker.cpp:745):
library "libmpc.so.2" not foundCANNOT LINK EXECUTABLE
由于我在 Android 上运行它,我不能使用“导出”来导出 LD_LIBRARY_PATH。
我尝试解决此问题的方法:
1. 使用 -Lgcc_dir/lib
添加库路径 2.使用 -Wl,-rpath,gcc_dir/lib 添加库路径
3. 执行时将 LD_LIBRARY_PATH 添加到环境变量中(Runtime.getRuntime( ).exec(命令,环境变量,文件目录))
编辑:我没有root权限!
编辑 2:我对调用进行了 strace,gcc 正在错误的路径中搜索文件:
6535 stat64("/vendor/lib/libmpc.so.2", 0xbeffefd0) = -1 ENOENT (No such file or directory)
6535 stat64("/system/lib/libmpc.so.2", 0xbeffefd0) = -1 ENOENT (No such file or directory)
6535 stat64("/vendor/lib/libmpc.so.2", 0xbeffefd0) = -1 ENOENT (No such file or directory)
6535 stat64("/system/lib/libmpc.so.2", 0xbeffefd0) = -1 ENOENT (No such file or directory)
还有其他方法可以更改 Lib Path 吗?
我不知道为什么找不到图书馆以及如何修复它。
任何帮助表示赞赏。
提前致谢。