常用的gcc编译指令和操作

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文件






猜你喜欢

转载自blog.csdn.net/groundhappy/article/details/73205511