gcc编译链接多文件


方法一直接编译
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值