test.h
1 #ifndef _test_h_test_a.cpp2#define _test_h_34
void testa();
5void testb();67
#endif
1 #includetest_b.cpp2 #include "
test.h"3
4void testa()
5
1 #include生成so檔案的命令2 #include "
test.h"3
4void testb()
5
g++ test_a.cpp test_b.cpp -fpic -shared -o libtest.so生成.a檔案的命令
1 gcc -c test_a.cpptest.cpp2 gcc -c test_b.cpp
3 ar -r libtest.a test_a.o test_b.o
1 #include "採用動態庫編譯命令test.h"2
3int main()
4
g++ test.cpp -o test -l. -ltest執行
export ld_library_path=./執行結果如下。./test
採用靜態庫編譯命令
g++ -static -o test -l. -ltest test.cpp執行效果
靜態庫的巢狀呼叫,有時候我想做乙個自己的靜態庫,它裡面要呼叫其他靜態庫裡面的函式,經過試驗
這個好像用ar -r不行,所以就在鏈結的時候需要兩個庫檔案都包含,同時要有這乙個標頭檔案才行。。。
linux下生成 so檔案和 a檔案
1.o 就相當於windows裡的obj檔案 乙個.c或.cpp檔案對應乙個.o檔案 a 是好多個.o合在一起,用於靜態連線 即static mode,多個.a可以鏈結生成乙個exe的可執行檔案 so 是shared object,用於動態連線的,和windows的dll差不多,使用時才載入。得到了...
Linux下生成 so檔案
linux下的.so檔案即shared libraries。shared library 是程式執行時載入的庫檔案。當乙個shared library 被成功的安裝以後,之後啟動的所有程式都會自動使用最新的shared library。也就是說,生成乙個.so檔案並告訴編譯器它的位置之後,所有的需要...
linux 下生成動態庫 so並引用
動態庫的引入及減少了主 檔案的大小,同時生成的動態庫又是動態載入的,只有執行的時候才去載入,linux 下的 動態庫 so 就像windows下的 dll一樣。有關動態庫的概念自行上網搜。一下是建立及引用動態庫 test so.h ifndef test so h define test so h ...