【发布时间】:2013-05-25 22:25:25
【问题描述】:
我想使用来自: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(command, environment_variables, files_dir))
编辑:我没有 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 吗?
我不知道为什么找不到库以及如何修复它。
任何帮助表示赞赏。
提前致谢。
【问题讨论】:
标签: android gcc compilation include