JAN之c 動態庫的編譯(linux)

2021-09-17 21:04:36 字數 562 閱讀 6851

建立乙個檔案hello.cpp

vim hello.cpp

#include using namespace std;

/***這裡使用extern "c" 是因為 c++在編譯時會將函式名改掉,導致最後的jna呼叫不成功。

**/extern "c"

void hello()

然後就是進行編譯了,

g++ -fpic -c hello.cpp

g++ -shared -o libtest.so hello.o

這樣在目錄下就會出現 libtest.so 這個檔案了

我們需要將這個.so檔案路徑放入執行環境中:(/learn/big/jna 是我的.so檔案的所在目錄)

執行一下:ldconfig(重新整理庫)

至此,動態庫編譯完成。

linux編譯動態庫之fPIC

在生成動態庫時,常常習慣性的加上fpic選項,fpic有什麼作用和意義,加不加有什麼區別,這裡做下小結 fpic的全稱是 position independent code,用於生成位置無關 什麼是位置無關 個人理解是 無絕對跳轉,跳轉都為相對跳轉。1 不加fpic選項 即使不加fpic也可以生成....

動態庫的編譯執行

在windows下動態鏈結庫是以.dll字尾的檔案,二在linux中,是以.so作字尾的檔案。動態鏈結庫的好處就是節省記憶體空間。1 linux下建立動態鏈結庫 在使用gcc編譯程式時,只需加上 shared選項即可,這樣生成的執行程式即為動態鏈結庫。例如有檔案 hello.c x.h main.c...

C語言如何編譯動態庫與靜態庫

關於動態庫與靜態庫的作用這裡就不在詳細贅述了,重點說一下如何編譯動態庫與靜態庫及使用,一些大型的程式一般擁有著良好的架構,各個功能模組之間能夠相互協調工作,達到預期的效果,但有的程式並不是所有的原始碼都是自己編寫,特別像是用到晶元廠商的提供的庫 能夠把這些融合起來的就是需要提供的庫 原料 test1...