-c
选项表示编译、汇编指定的源文件(也就是编译源文件),但是不进行链接。使用-c
选项可以将每一个源文件编译成对应的目标文件。$gcc -c test1.c test2.c test3.c $ls -l *.o -rwxr--r-- 1 root 23 Feb 7 02:57 test1.o -rwxr--r-- 1 root 17 Feb 7 02:57 test2.o -rwxr--r-- 1 root 20 Feb 7 02:57 test3.o
-c
选项,则仅仅生成一个可执行文件,没有目标文件。-c
选项表示只编译源文件,而不进行链接,因此,对于链接中的错误是无法发现的。-c
选项的时候不会发现链接错误。#include <stdio.h> void func_a(){ printf("FUNC_A\n"); }
#include <stdio.h> int main(void) { func_a(); func_b(); return 0; }
-c
选项编译两个源文件,如下所示:
$gcc -c func.c main.c
编译器没有输出任何错误信息。-c
选项编译两个源文件:
$gcc func.c main.c
会看到如下的报错信息:
/tmp/ccLlOhvh.o:在函数‘main’中:
main.c:(.text+0x14):对‘func_b’未定义的引用
collect2: 错误:ld 返回 1
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有