linux下動態庫的編譯
1 實踐
test_cl.c:
1 #include
2 #include
3 4 extern int add(int a, int b);
5 #define labeladdr
6 main()
7 test_so.c
1 int add(int a, int b)
2 test_so1.c
1 int add(int a, int b)
2 1、
gcc -c -fpic test_so.c
生成test_so.o
2、gcc -shared -fpic -o libtest_so.so test_so.o
生成libtest_so.so
3、(rm test_so.o)
gcc test_cl.c -l. -ltest_so
4、export ld_library_path=`pwd`
5、./a.out
結果是add(a+b) = 3
6、(rm libtest_so.so)
gcc -shared -fpic -o libtest_so.so test_so1.c
7、./a.out
結果是add(a+b) = -1
(如果動態庫依賴於其他的動態庫不存在,在鏈結成可執行檔案時才會報錯)
(優先鏈結動態庫的,除非用-static引數指定鏈結靜態庫)
linux下動態庫的使用
動態庫的呼叫分為隱式呼叫和顯式呼叫 動態庫是由原始檔編譯而成的,與普通程式不同的是,動態庫沒有main函式,不能單獨執行,需要被呼叫才能執行。寫乙個四則運算的動態庫 calculate.h檔案 ifndef calculate h h define calculate h h 加法 int add ...
linux動態庫的編譯與使用
linux下的動態庫以.so為字尾,我也是初次在linux下使用動態庫,寫一點入門步驟,以便以後能方便使用。第一步 編寫linux程式庫 檔案1.動態庫介面檔案 動態庫介面檔案getmaxlen.h ifndef getmaxlen h define getmaxlen h int getmaxle...
linux下動態庫編譯的依賴問題
這裡主要是想試驗一下,對乙個具有多層巢狀的動態庫進行編譯時,是否要把最底層的庫也包含進來的問題,結論是 只要直接依賴的庫名稱,不需要最底層庫名稱。一,目錄結構 zzz add add.cpp add.h calc calc.cpp calc.h main main.cpp pkg pkg.cpp p...