【问题标题】:libmpc.so.2 not found while compiling with Gcc使用 Gcc 编译时找不到 libmpc.so.2
【发布时间】: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


    【解决方案1】:

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

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

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

    PS:可能你需要 bash

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多