gcc -c xxx.c
生成同名文件,只编译,不链接为可执行文件,生成后缀为 .o 的目标文件。通常用于编译不包含主程序的子程序文件。
gcc -o XXX
XXX为生成文件名,(据说同时这个名称不能和源文件同名,但我实验是可以同名的)。如果不给出这个选项,gcc就给出默认的可执行文件 a.out 。`
gcc XXX.c
XXX.c中要求有main()且无外部文件引用,即不能进行自动链接。但可以将外部文件放于其后同时编译gcc XXX.c YYY.c生成可执行文件
eg:
int sum(int *a, int n);
int array[2] = {1, 2};int main()
{
int val = sum(array, 2);
return val;
}
int sum(int *a, int n)
{
int i, s = 0;
for (i = 0; i < n; i++) {
s += a[i];
}
return s;
}
编译:
root@lsy-VirtualBox:/mnt/Wshare/chap7_code# gcc -o main main.c
/tmp/ccUYJtKb.o: In function `main':
main.c:(.text+0x13): undefined reference to `sum'
collect2: error: ld returned 1 exit status
root@lsy-VirtualBox:/mnt/Wshare/chap7_code# gcc -o sum sum.c
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
gcc -E
预处理,生成.i的目标文件
gcc -S
直到汇编完成,生成.s目标文件
gcc -Wall
使gcc产生尽可能多的产生警告信息