Linux下編寫動態連結程式庫

來源:互聯網
上載者:User

Linux下編寫動態連結程式庫的簡單過程

(1)       使用編譯選項-fPIC,產生與位置無關的代碼

(2)       使用編譯選項-fvisibility=hidden隱藏符號

(3)       使用連結選項-shared表示產生動態連結程式庫

(4)       使用連結選項-wl將參數傳遞給連結器

(5)       使用連結選項-soname指定庫名,注意不是庫檔案名稱

(6)       保險起見,顯式連結C庫,即指定-lc,保證得到所需的啟動代碼,避免程式在有不相容版本C庫的系統上無法啟動

(7)       為對外輸出符號加上特殊聲明,__attribute__((visibility("default")))

(8)       為了讓GCC編譯連結時能找到非預設路徑下的動態連結程式庫,在/etc/profile中添加GCC的LIBRARY_PATH環境變數

(9)       為了讓程式運行時能自動找到非預設路徑下的動態連結程式庫,在/etc/ld.so.conf中添加路徑,然後用/sbin/ldconfig更新緩衝

(10)   例子:

a)         int func() __attribute__((visibility("default")));

b)        gcc –fPIC –fvisibility=hidden –g –c xxx.c –o xxx.o

c)        gcc –g –shared –Wl,-soname,libxyz.so –o libxyz.so.1.0 xxx.o

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.