添加库路经 linux,linux下的静态库与动态库
文件名形如 libxxx.so,其中so是 Shared Object 的縮寫,即可以共享的目標文件。
生成動態(tài)庫常用 gcc 命令;
舉例:
編寫頭文件:ok.h 文件
#ifndef __OK_H__#define __OK_H__
voidok();#endif
編寫 ok.c 文件
#include "ok.h"
int main(int argc, char** argv) {
ok();return 0;
}
生成動態(tài)庫
gcc –fPIC –shared –o libok.so ok.c
編寫 test.c 測試文件
#include "ok.h"
int main(int argc, char argv**) {
ok();return 0;
}
利用動態(tài)庫生成可執(zhí)行文件;
gcc -o Out test.c -L ./ –l ok
注意:上面中的 –L :追加目錄到庫文件的搜索路徑中; –l? :指定使用的庫文件,其中的庫名 將前綴lib和后綴.a(或.so)省略。
現(xiàn)在運行:Out 可執(zhí)行文件;
yinheyi@ubuntu:~/play$ ./Out
./Out: error while loading shared libraries: libok.so: cannot open shared object file: No such file or directory
先解決存在問題:這個Out 運行時,它的庫的搜索路經(jīng)不包括當前目錄吧(上面用-L 追加的目錄只用于生成Out文件的,和運行時沒有關系),所以呢,
1. 我們可以把 libok.so 庫文件放到搜索目錄中去:/usr/lib 或 /lib;
2.也可以臨時添加當前搜索路經(jīng):
export LD_LIBRARY_PATH=`pwd`
3. 配置文件/etc/ld.so.conf中指定的動態(tài)庫搜索路徑;動態(tài)裝入器將在其中查找共享庫。注意: /etc/ld.so.conf 中并不必包含 /lib 和 /usr/lib,因為ldconfig程序會自動搜索這兩個目錄。
1)把庫路經(jīng)放入 /etc/ld.so.conf文件中;
2)運行l(wèi)dconfig 生成最新的 /etc/ld.so.cache 文件;
本文采用方法二以后再次運行,成功:
yinheyi@ubuntu:~/play$ ./Out
Are you OK??
總結
以上是生活随笔為你收集整理的添加库路经 linux,linux下的静态库与动态库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq照片墙怎么删除
- 下一篇: qq发表说说怎么不显示手机型号