linux/eclipse/c++ 動態庫的創立與調用


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下面在工程屬性里指定路徑與名稱。這點是二者的區別。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM