linux 文本命令和eclipse下開發靜態庫和動態庫

windows 和linux都有靜態庫和動態庫,以前習慣在windows下開發動態庫和靜態庫。對於linux下的庫的路徑不是很熟悉。
 特學習了一下linux 開發靜態庫和動態庫庫。
一:文本模式下的開發
參考博文
http://blog.csdn.net/liukun321/article/details/6912046
http://blog.donews.com/dukejoe/archive/2006/01/12/691864.aspx
1 靜態庫的開發
使用命令式開發
[yuj@localhost static_learn]$ vi static_test.cpp 
[yuj@localhost static_learn]$ vi static_test.h
[yuj@localhost static_learn]$ g++ -c static_test.cpp 
[yuj@localhost static_learn]$ ar r libTestAdd.a static_test.o
使用ar 命令生成靜態庫 。
ar命令 :
r參數 把文件插入到靜態庫文件中
d 從指定的靜態庫文件刪除文件
m 把文件移到指定的文件中
a 把新的目標文件(.o)文件添加到靜態庫文件中之後
使用靜態庫
[yuj@localhost static_learn]$ vi static_main.cpp
編寫測試文件,調用庫中的喊聲
[yuj@localhost static_learn]$ g++ static_main.cpp ./libTestAdd.a
或者
[yuj@localhost static_learn]$ g++ static_main.cpp -L. -lTestAdd
2 動態庫的開發
[yuj@localhost static_learn]$ g++ -shared static_test.cpp -o libTestAdd.so
使用該動態庫
[yuj@localhost static_learn]$ g++ static_main.cpp -lTestAdd -L.
[yuj@localhost static_learn]$ ./a.out
./a.out: error while loading shared libraries: libTestAdd.so: cannot open shared object file: No such file or directory
原因找不到該動態庫。詳解linux的頭文件和庫的尋找路徑的方法
兩個辦法找到庫
1 修改 /etc/ld.so.conf 配置文件 把當前路徑加入進去 。執行/sbin/ldconfig 即可
2 修改環境變量
[yuj@localhost static_learn]$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
[yuj@localhost static_learn]$ ldd a.out 
linux-gate.so.1 =>  (0x00cea000)
libTestAdd.so => ./libTestAdd.so (0x00134000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x06d2b000)
libm.so.6 => /lib/libm.so.6 (0x003b0000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00dd0000)
libc.so.6 => /lib/libc.so.6 (0x001fa000)
/lib/ld-linux.so.2 (0x001d4000)
[yuj@localhost static_learn]$ ./a.out
執行成功

二: eclipse 圖形界面開發
1 eclipse 設置 跟VC 的設置類似

Project->Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries
添加庫的名稱 :Libraries (-l): shared

添加庫的路徑:Library search path (-L): 

靜態庫和動態庫設置相同,但是動態庫的話設置運行時會 需要在 /ect/ld.so.conf裏面添加對應的路徑,在運行/sbin/ldconfig
命令則可以運行



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章