linux下生成動態連結庫
怎樣在linux下生成動態連結庫即.so檔案?
一、
首先需要一個好的編譯工具, ,一個好的帶編譯工具的環境是很重要的,我選擇的是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檔案,一定要注意一里的第四點,否則函式名就被改變了。
一、
首先需要一個好的編譯工具, ,一個好的帶編譯工具的環境是很重要的,我選擇的是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檔案,一定要注意一里的第四點,否則函式名就被改變了。
相關文章
- linux下靜態連結庫和動態連結庫的區別有哪些Linux
- Linux下的靜態連結與動態連結Linux
- 動態連結庫與靜態連結庫
- cmake 連結動態連結庫
- linux 下動態連結實現原理Linux
- 動態連結庫和靜態連結庫的區別
- 動態連結庫(DLL)
- 動態連結庫(轉)
- Linux下靜態庫生成指南Linux
- Linux環境下:程式的連結, 裝載和庫[靜態連結]Linux
- 在 Linux中如何使用動態連結模組庫?Linux
- LINUX動態連結庫高階應用(轉)Linux
- Win32動態連結庫與靜態連結庫的區別Win32
- 程式的連結和裝入及Linux下動態連結的實現Linux
- Windows下的VC++動態連結庫程式設計WindowsC++程式設計
- Linux系統下Qt動態庫的生成已經動態庫的使用例項圖解LinuxQT圖解
- Linux下的靜態庫、動態庫和動態載入庫Linux
- linux下的靜態庫與動態庫Linux
- Linux 動態庫生成與使用指南Linux
- Linux動態庫生成與使用指南Linux
- Linux下動態共享庫 連線和載入路徑Linux
- Linux下的共享庫(動態庫)和靜態庫Linux
- 例程詳析動態連結庫 (轉)
- 類,介面與動態連結庫 (轉)
- cmake:生成靜態庫和動態庫
- 深入理解C語言----動態庫 & 靜態庫 & 連結C語言
- LINUX系統中動態連結庫的建立與使用(轉)Linux
- 【連結 1】與靜態連結庫連結
- Linux靜態庫和動態庫學習總結Linux
- 簡述Linux下的靜態庫和動態庫Linux
- Linux環境下建立靜態庫和動態庫Linux
- 載入動態連結庫——dlopen dlsym dlclose
- C#呼叫C++動態連結庫C#C++
- 完成Excel動態連結外部資料庫Excel資料庫
- 動態連結庫(DLL)的建立和使用
- 動態連結庫DLL_第1篇
- 【技術向】Linux動態連結庫預載入型後門Linux
- Linux 靜態庫生成指南Linux