本博文转自一下地址:
静态链接库生成及使用
动态链接库生成及使用
在Linux上创建及使用静态库的步骤如下:
1. 写源文件,通过 gcc -c xxx.c 生成目标文件。
2. 用 ar 归档目标文件,生成静态库。
3. 配合静态库,写一个使用静态库中函数的头文件。
4. 使用静态库时,在源码中包含对应的头文件,链接自己的库
在Linux上创建及使用动态库的步骤如下:
1. 编写源文件;
2. 将一个或几个源文件编译链接,生成共享库;
3. 通过 -L<path> -lxxx 的gcc选项链接生成的libxxx.so;
4. 解决运行时 cannot open shared object file: No such file or directory的错误。方案有一下三种:
1> 把libxxx.so放入链接库的标准路径(/lib或者/usr/lib)下;
2> 指定 LD_LIBRARY_PATH. LD_LIBRARY_PATH只在本次运行时有效;
3> 将动态库所在路径加到/etc/ld.so.conf文件中,并以root权限执行 ldconfig 命令.
注意点: 手动写道/etc/ld.so.conf文件中好像不行,可以用
echo "/home/..." >> /etc/ld.so.conf
静态库和动态库的区别及注意点:
1. 静态链接库的指令全部被包含在最终生成的可执行文件中,而动态链接库是可执行文件在执行时,根据函数映射表,动态的调用或卸载动态库中的函数等;
2. 静态库中不能在包含其他的静态库或者动态库,而动用库则可以.
3. 动态库中的函数分为两种,一种是可以导出的函数,可供应用程序使用,另外一种是Dll内部函数,只能在Dll程序中使用,应用程序无法调用它们.