静态库
编译时候放入可执行文件
生成
1 2
| 1. gcc -c main.cpp -o main.o 2. a.o b.o c.o => all.a
|
命名
操作
1 2
| ar rcs libmyhello.a hello.o gcc -o hello main.c -static -L. -lmyhello
|
动态库
运行时候载入内存
命名
操作
1 2
| gcc -shared -fPIC -o libmyhello.so hello.o gcc -o hello main.c -L. -lmyhello
|
执行时候如何定位动态库位置
1 2
| LD_LIBRARY_PATH 里面记录了位置 export LD_LIBRARY_PATH=’pwd’
|
这个目录自动包含
在新安装一个库之后如何让系统能够找到他
如果安装在/lib或者/usr/lib下,那么ld默认能够找到,无需其他操作。
如果安装在其他目录,需要将其添加到/etc/ld.so.cache文件中,步骤如下
- 编辑/etc/ld.so.conf文件,加入库文件所在目录的路径
- 运行ldconfig,该命令会重建/etc/ld.so.cache文件
动态库查找目录
1 2 3 4 5
| 它先后搜索 1.elf文件的 DT_RPATH段 2.环境变量LD_LIBRARY_PATH 3./etc/ld.so.cache文件列表 4./lib/,/usr/lib目录找到库文件后将其载入内存,但是我们生成的共享库在当前文件夹下,并没有加到上述的4个路径的任何一个中,因此,执行后会出现错误)
|
查看依赖
http://www.cppblog.com/deane/articles/165216.html