linux中[gcc -shared -fPIC]的含義


 

linux在gcc編譯時加上 -shared 參數時,目的是使源碼編譯成動態庫 .so 文件;

 

而-fPIC的作用是 告知編譯器 生成位置無關代碼(編譯產生的代碼沒有絕對位置,只有相對位置);從而可以在任意地方調用生成的動態庫。

 

示例:

  gcc fun.c -shared - fPIC -o libfun.so

  如果代碼沒有錯誤,則可以在當前路徑下生成libfunc.so文件;

  此時此動態庫還不能被正確的鏈接上,因為系統尋找鏈接庫的路徑不包含當前路徑;需要將此so文件放到搜尋路徑中,或者添加尋找路徑;

      默認查找的路徑中有 /usr/lib   可以使用:

            sudo cp libfunc.so /usr/lib/ 

      將動態庫復制到 /usr/lib目錄中。

 

      或 添加搜尋路徑可以在環境變量  LIBRARY_PATH  中添加:

            LIBRARY_PATH=$LIBRARY_PATH:.

      這樣就添加了[當前路徑]為動態庫的搜尋路徑。(   :為路徑分割符    . 為當前路徑   )

      注意:修改了LIBRARY_PATH之后必須執行  export LIBRARY_PATH  才能生效,而且只能在當前終端生效。

  在其他文件需要調用其中的函數時,編譯時加上 -lfunc。

示例:

  gcc main.c -lfun

  即可生成鏈接了libfunc.so的可執行文件;

  


免責聲明!

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



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