制作动态库和静态库

在linux系统中。我们在编译的时候时常会遇到有关静态库和动态库有关的问题,接下来对问题进行总结:

gcc 常用选项:

常用选项  描述  

-E 预处理,开发过程中想快速确定某个宏可以使用“-E -dM“

-c 把预处理、编译、汇编都做了,但是不链接

-o 指定输出文件
-I指定头文件目录
-L 指定链接时库文件目录(大写)
-l指定链接哪一个库文件(小写)

制作动态库:

1、gcc -c -o minus.o minus.c

  gcc -c -o plus.o plus.c

  gcc -c -o main.o main.c

2、gcc -shared -fPIC -o libmp.so minus.o plus.o(shared 制作共享库, fPIC位置无关码,在交叉编译的时候用到)

3、gcc -o test main.o -lmp -L./

4、ldd test

交叉编译的环境只是交叉编译的工具链不同而已。在开发板上运行程序的时候,需要讲所需的动态库复制到开发板的/lib目录下。或者是讲当前动态库所在位置添加到环境变量LD_LIBRARY_PATH中去。

 

制作静态库:

1、gcc -c -o minus.o minus.c

  gcc -c -o plus.o plus.c

  gcc -c -o main.o main.c

2、ar crs libmp.a minus.o plus.o 

3、gcc -o test main.o libmp.a

如果是嵌入式开发板不需要将静态库复制过去。只需要关注位置无关码就行。

 

一下是一些经常用到的选项:

 

posted @ 2020-10-26 23:57  小丑喵  阅读(108)  评论(0)    收藏  举报