linux下產生動態連結程式庫so檔案__linux

來源:互聯網
上載者:User

怎樣在linux下產生動態連結程式庫即.so檔案。

一、
首先需要一個好的編譯工具,直接用gcc命令列編譯已經不再是一個明智之舉了,一個好的帶編譯工具的環境是很重要的,我選擇的是easyeclipse,它整合了CDT,可以很方便地編寫C和C++程式,它自動整合了gcc編譯器,編譯工作只要在編譯選項裡點一下編譯即可,方便快捷。

現在說說怎麼在easyeclipse環境下產生.so檔案吧
1.選擇建立工程,建立一個c++工程

2.在工程類型選項裡選擇 Shared Library,然後填入工程名字PXXX點擊完成即可。

3.編寫程式,然後編譯就會在debug或者release裡產生一個libPXXX.so檔案,如果不要lib的起頭標記點擊project菜單的Properties選項,然後在彈出的介面的右邊點擊Build artifact頁面,將Output prefix選項的內容清空即可。

4.如果是C++程式,注意在介面函數的前面加上extern "C"標記,在標頭檔加上如下標記:
#ifdef   __cplusplus   
#extern   "C"{   
#endif   
    
標頭檔主體   
    
#ifdef   __cplusplus   
}   
#endif   
如果不加以上標記,經過編譯後,so裡的函數名並非你編寫程式時設定的函數名,在開發環境左側的工程檔案清單中點開debug項裡的PXXX.o可以看到so檔案裡的函數名都是在你設定的函數名後面加了一個__Fi標記,比如你用的設定的函數名稱是Func(), 而so裡的函數名則為Func__Fi()或者其他的名稱。


二、如果一定要用gcc編譯器直接編譯的話就如下所示:

編譯c程式:
gcc -shared -fpic XXX.c -o XXX.so

編譯c++程式:
g++ -shared -fpic XXX.cpp -o XXX.so

注意,編寫C++程式的so檔案,一定要注意一裡的第四點,否則函數名就被改變了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.