All,请原谅我熟悉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 源代码文件构建可执行文件吗?似乎它不需要链接工具。对吗?谢谢。
gcc 可以从 c 源代码文件构建可执行文件吗?
是的,当然。
似乎不需要链接工具?
不,我从 gcc 手册中提取以下句子,GCC 能够预处理和编译多个文件要么变成多个汇编程序输入文件,要么变成一个汇编程序输入文件;然后每个汇编程序输入文件生成一个对象文件,链接合并所有对象文件(那些新编译的,以及指定为输入的那些)到可执行文件中。
默认情况下,gcc 将执行编译和链接操作,除非您键入特定选项,例如:
gcc -c file.c
这只会将 file.c 编译为 file.o或:
gcc -o file file.c
这将把File.c编译到File.o,并最终将其链接成可执行文件。
虽然燕冲已经给出了很好的答案,但从这里我也找到了很好的阅读。我认为这将有助于理解Compile, Link and Build
的概念。谢谢。