常用的gcc编译指令和操作

本文详细介绍了GCC工具链的使用方法,包括如何将源码编译成.o文件、执行链接生成可执行文件、合并.o文件及生成静态库(.a)和共享库(.so)等。此外还讲解了链接过程中动态库和静态库的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gcc是一套工具链。


1将源码编译成.o 只编译不链接。

gcc   -c output.o  source.c


2执行链接

gcc -o output source.c obj1.o obj2.o obj3.o

gcc -o output   source.o obj1.o obj2.o obj3.o

也可以用ld执行链接过程。但是必须都指定

ld -o output  obj1.o obj2.o obj3.o -e entrypoint

-e指定入口点。实际上默认是_start



3将两个.o文件合并成一个.o

ld -r one.o another.o -o output.o

-r表示生成可重定位的.o文件



4由.o文件产生.a文件 使用ar命令

ar rc liboutput.a   obj1 obj2 obj3 obj4

合并两个.a文件.方式是先解开再产生

ar x lib1.a

ar x lib2.a

ar rc liboutpu.a *.o

 

5使用.o文件产生 so

gcc -o liboutput.so -shared -fPIC obj1.o obj2.o obj3.o

-fPIC指定编译的是位置独立的代码.主要是使得多个实例能够共享一个so文件。减少内存占有量。



6链接时使用 *.a和链接时使用*.so文件

-L指定动态库的路径 -l指定动态库的名称

比如 

gcc -o main -L./ -ltest

表示 去连接当前目录下的 libtest.so文件

静态库的话只需要末尾加上*.a文件

gcc -o main  libtest.a

表示使用静态库libtest.a文件






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值