.out 和 .exe都是可执行文件,前者是Linux系统下,后者是window系统下
linux下的编译-链接常见场景cc
1、一般如果cc -c xxx 就是只编译为目标文件,cc xxx 可以是编译+链接或者是链接
对于源文件,编译产生目标文件(.o),链接后才产生可执行文件(.out)
cc main.c -o main.o//编译、链接一个源文件
//1、生成一个可执行文件main.out,未指定则命名为a.out
//2、中间产生的目标文件 main.o被自动删除
cc -c main.c//仅编译一个源文件,生成目标文件main.o
cc main.c test.c p.c //编译、链接多个源文件
//1、中间得到的目标文件不会被删除
cc main.c
cc main.o test.o p.o
//连接几个目标文件为可执行文件
1、最大的好处是编译和连接可以分开,对于一个大型项目,如果只修改了几个源文件,无需对所有源文件都进行编译
假如现在只有main.c进行了修改,则只编译一个文件,其他连接现有的即可。
cc main.c test.o p.o
2、 假如现在有main.c 和 main.h,应该如何编译链接?
cc main.c
这样处理是没有问题的,因为cc会自动找到依赖的main.h
3、 假如现在 main.c test.c test.h 三个文件,正常情况下确实是
cc main.c test.c
就可以了,如果test.c发生了修改,则1中已经给出了高效的解决方案
但是如果test.h发生了修改呢?这就要考虑谁依赖于test.h
如果main.c和test.c都依赖于test.h,那就只能重新
cc main.c test.c
如果只有test.c依赖于test.h,那么
cc -c test.c -o test.o
cc test.o main.o