如何在android-x86终端中运行C程序?

时间:2017-01-20 09:55:09

标签: gcc android-x86

我必须使用在ubuntu中使用gcc编译的C程序。我想在android终端中运行该可执行文件。当我运行它时,显示"文件或目录未找到"或者"不可执行:ELF32"。 我想在android终端中运行代码。 gcc中是否有任何方法或标志或使用任何其他编译器,以便我可以在Android终端中运行我的代码。?

1 个答案:

答案 0 :(得分:0)

Android不使用与Ubuntu相同的系统库,因此无法找到它们。

有两种解决方案:

  1. 复制您需要的库。

    如果您可以将它们放在Ubuntu中的相同文件系统位置那么好,否则您需要手动运行ld-linux.so并告诉它在哪里找到库。或者,您可以重新链接程序,以便它希望在非标准位置找到动态链接器和库。您也可以使用chroot,但这需要root,并且您需要找到一个有效的chroot二进制文件。

  2. 使用静态链接。

    这通常意味着将-static传递给GCC。你会得到一个更大的二进制文件,它应该完全是自包含的,没有依赖关系。它要求 build 系统上的所有库的静态版本都可用。此外,某些功能(例如DNS查找)总是期望共享库,因此他们不会以这种方式工作。

  3. 即使这样,你也应该期待一些Linux功能不起作用。基本上,任何需要/ etc中的硬件功能或配置文件的东西都需要付出很多努力。已经有各种各样的项目已经完成了这项工作(搜索" linux chroot android")。

    我不确定&#34;不可执行文件:ELF32&#34;消息意味着,但您应该检查是否构建了32位或64位可执行文件,以及Android二进制文件正在使用哪些(file <whatever>应该告诉您)。