2

我想使用来自: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 吗?

我不知道为什么找不到图书馆以及如何修复它。
任何帮助表示赞赏。
提前致谢。

4

1 回答 1

0

我收到了寻求帮助的电子邮件。

恐怕您需要将 /data/local/gcc/lib 添加到 LD_LIBRARY_PATH。

如果它不能解决问题,请告诉我。我得想想另一种可能。

PS:可能你需要 bash

于 2013-08-01T08:41:11.900 回答