码迷,mamicode.com
首页 > 系统相关 > 详细

Linux学习——动态链接库和静态链接库

时间:2017-12-03 21:47:58      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:调用   命令   生成   conf   学习   内核   .so   通过   目录   

静态链接库:

 用户在生成可执行文件时,调用的以.a结尾的库文件

动态链接库:

用户在生成可执行文件时,调用的以.so/.so.1.xxx结尾的库文件

 

静态库文件在编译时,会编译到可执行文件里面,所以在运行的时候,可以不依赖于静态库文件,造成生成的可执行文件过大。

静态库在编译时,不会包含到可执行文件中,通常在运行时,需要将对应的动态库文件一起拷贝,才能正常执行,但是可执行文件一般比较小。

 

.la 为libtool生成的共享库,其实是个配置文档。可以用file或者vim查看。

.ko 文件是Linux内核使用的动态链接文件后缀,属于模块文件,用在Linux系统启动时加载内核模块。

 

创建和生成库文件

1、gcc -c test.c                    生成.o的对象文件

2、ar -r libtest.a test1.o test2.o           生成libtest.a的静态库文件

3、gcc -Wall -fpic -shared test1.c test2.c -o libtest.so  生成动态库文件

4、.la库一般通过makefile生成。

 

gcc test.c -o test -I/usr/local/include -L/usr/local/lib -la -lb -lc

gcc test.c -o test -I/usr/local/include /usr/local/lib/liba.a /home/usr/local/lib/libb.a /home/usr/local/libc.a

 

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"    等效于 export CFLAGS=“$CFLAGS:/usr/local/include”;LDFLAGS="$LDFLAGS:/usr/local/lib"

 

多个静态文件链接成一个静态文件:

.a 文件的结构和.tar文件就没有什么区别。 x 命令解出来, a 命令添加, t命令列表
假设A.a, B.a C.a 在/usr/local/lib目录下
mkdir /tmp/libABC
cd /tmp/libABC
ar x /usr/local/lib/A.a
ar x /usr/local/lib/B.a
ar x /usr/local/lib/C.a
ar cru libABC.a *.o
ranlib libABC.a

 

Linux学习——动态链接库和静态链接库

标签:调用   命令   生成   conf   学习   内核   .so   通过   目录   

原文地址:http://www.cnblogs.com/Blog-c/p/7811190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!