【问题标题】:Can Gcc build a executable program?Gcc可以构建可执行程序吗?
【发布时间】:2013-11-14 08:37:17
【问题描述】:

所有,请原谅我熟悉 Android/Linux 平台的 C 程序。现在我正在尝试使用Sourcery G++ Lite Edition for ARM 来构建我的示例C 程序并将其部署到Android 平台的Linux 上。 以下是我遵循的说明。 到目前为止,它工作正常。但是我有一些我不太理解的东西。请审查它。谢谢。

源代码是一个hello world程序。

#include <stdio.h>
int main(int argc,char * argv[])
{
  printf("Hello, Android!\n");
  return 0;
}

在开发机命令控制台中。运行以下命令行。

arm-none-linux-gnueabi-gcc hello.c -static -o hellostatic
adb push hellostatic /data/test
adb shell
cd /data/test
.hellostatic

Hello, Android!

所以这是我的问题。

gcc 可以从 c 源代码文件构建可执行文件吗?似乎它不需要链接工具。这样对吗?谢谢。

【问题讨论】:

  • 是的。显然,您的程序与某些东西(即 glibc)相关联,您可以获得 glibc 版本并添加 printf("Glibc version: %s\n", gnu_get_libc_version());到你的代码。您需要包含#include

标签: android c linux gcc


【解决方案1】:

gcc 可以从 c 源代码文件构建可执行文件吗?

是的,当然。

好像不需要链接工具?

不,我从 gcc 手册中提取了以下句子, GCC 能够预处理和编译几个 将文件存入多个汇编程序输入文件,或存入一个汇编程序输入文件;然后每个 汇编器输入文件生成一个目标文件,链接将所有目标文件(那些 新编译的,以及那些指定为输入的)到一个可执行文件中。

默认情况下,gcc 将执行编译和链接操作,除非您键入特定选项,例如:

gcc -c file.c

这只会将 file.c 编译为 file.o 或:

gcc -o file file.c

这会将 file.c 编译为 file.o 并最终将其链接为可执行文件。

【讨论】:

    【解决方案2】:

    虽然盐冲已经给出了很好的答案,但我也从here中找到了一个很好的阅读。我认为这将有助于理解Compile, Link and Build 的概念。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 2011-04-23
      • 1970-01-01
      相关资源
      最近更新 更多