【发布时间】:2012-11-14 22:30:36
【问题描述】:
我使用 Android GCC 工具链(普通 linux,没有 android 或 NDK)构建了一个原生 linux ARM 二进制文件。
我通过 adb shell 从我的 PC 连接到运行 Android 4 的平板电脑。 我将该二进制文件“adb push”到该设备上的 /system/bin 中,希望我能让它在那里执行。我用 chmod 777 将其标记为可执行。
如果我尝试执行它,我会得到“没有这样的文件或目录”。
更多信息: 这个小程序使用 fc 和 fm 库。由于 ARM 工具链似乎没有 crt1,从我发现的示例中,它通常包含启动代码,我们在 android 构建中搜索包含它的文件,找到 crtbegin_dynamic 和 crtend_dynamic,但对于 _static 等效项,其中之一丢失了,所以我没有将 -static 传递给 GCC。它是用“-nostdlib”构建的。
可能是什么问题?
【问题讨论】:
-
您需要使用 nm 或类似工具来查找可执行文件的依赖项,但实际上您应该只使用 NDK gcc 为 Android 构建,除非您坚持以艰难的方式做事。 请注意,这个问题与缺少开发机器的库无关,尽管在这个完全不同的主题上神秘地吸引了一个流行的答案。