gcc编译链接多文件

时间:2021-11-04 01:59:10

方法一直接编译
gcc file1.c file2.c file3.c main.c -o out
前提是main.c要include其他文件的头文件,来避免main文件中没有声明就使用没定义的函数导致的报错,如果要写的挫点,也可以不include头文件,而在main文件里手写那几个声明。

方法二把3个文件编译成动态共享库,再编译main
gcc -shared -fPIC file1.c -o libfile1.so
gcc -shared -fPIC file2.c -o libfile2.so
gcc -shared -fPIC file3.c -o libfile3.so
gcc main.c -L. -lfile1 -lfile2 -lfile3 -o out
通过so产生的out,依赖so文件,好处是如果file2.c更新了那么只需要替换新的libfile2.so,就可以直接运行原来的out获得新功能,而不需要再次编译出out替换。

方法三静态库的方式

gcc -c file1.c

gcc -c file2.c

gcc -c file3.c

ar -rc liballfiles.a file1.o file2.o file3.o

gcc main.c -L. -lallfiles -o out


大点项目手写makefile,偷懒点靠ide直接搞定。

看官方文档能获得更多东西
https://gcc.gnu.org/onlinedocs/gcc/Invoking-GCC.html
Link Options
https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html


转自链接:https://www.zhihu.com/question/40972250/answer/89031476