linux/eclipse/c++ 動態庫的創立與調用
建立動態連結程式庫
在Eclipse中建立新的C++工程,File->New->Project->C++->C++ Project,選擇Shared Library。
編譯之後將在工程目錄下產生一個libshared.so檔案,這就是我們要用的動態連結程式庫檔案。
匯入動態庫
Project->Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries,添加Libraries (-l): shared,添加Library search path (-L): {剛才編譯產生的*.so檔案路徑}。
至此編譯可以通過,運行程式還需要指定預設的動態庫搜尋路徑。有兩類方法,一類是修改系統的預設搜尋路徑,類似添加環境變數的方法。另一類是把動態連結程式庫的路徑資訊編入二進位可執行檔。
第一種:在/etc/ld.so.conf中添加動態庫路徑,然後運行ldconfig生效。或者export LD_LIBRARY_PATH=路徑。這兩個方法都只能在eclipse外部生效。後一種只能在同一終端裡有用。在eclipse中,可以設定 Run_configurations->Environment添加環境變數LD_LIBRARY_PATH。
第二種:Tool Setting -> GCC C++ Linker -> Miscellaneous -> Other options 添加 -R/路徑。這種方法產生程式以後,動態連結程式庫的路徑就不能變動了。
當然,還有最為簡單實際的一種方法,直接把動態連結程式庫放到系統的預設路徑之下:/lib或/usr/lib。
Linux Eclipse 中C/C++編譯,加入連結庫的方法
右鍵點擊project->properties->c/c++ builder->settings裡面添加編譯器和連結器的參數。
比如你這個-lhello庫就可以在linker的libraries添加,也可添加hello庫的搜尋路徑-L
比如:
pthread 庫不是 Linux 系統預設的庫,串連時需要使用靜態庫 libpthread.a。
所以在使用pthread_create()建立線程,以及調用 pthread_atfork()函數建立fork處理常式時,需要連結該庫。
問題解決如下:
在編譯中要加 -lpthread參數
gcc -o pthread pthread.c -lpthread
就可以在 GCC C Linker 中的 Libraries 中的 Libraries(-l)中添加pthread ,記住-l它預設已經添加上了。
以上內容轉自http://hi.baidu.com/kakakun1/blog/item/22b4b6386e9b193eb9998fe7.html
實際上只通過屬性設定匯入linux版本的dll即可,最後匯入的格式如。
圖中可以看到eclipse下dll的存在形式像引用的檔案一樣,VS下面在工程屬性裡指定路徑與名稱。這點是二者的區別。