linux下使用eclipse編譯、連結、動態庫的學習筆記
一、建立動態連結庫
1、建立工程new->project->c++ project選擇Shared Library->Empty Project.輸入工程名MySharedLib,點選finish,完成工程的建立。
2. 庫程式碼的編寫
2.1.testa.cpp
- #include <stdio.h>
- void Test_a()
- {
- printf("This is Test_a!");
- }
- #include <stdio.h>
- void Test_b()
-
{
- printf("This is Test_b!");
- }
2.3. testc.cpp
- #include <stdio.h>
- void Test_c()
- {
- printf("This is Test_c!");
- }
2.4、API介面檔案
testh.h
- void Test_a();
- void Test_b();
- void Test_c();
編寫程式碼在windows下封裝動態連結庫時對要封的函式要用__declspec(dllexport)來標明,在linux下不用,在linux下只需要直接把要封的函式的宣告放到一個API標頭檔案(.h檔案)
3、生成動態連結庫編譯程式碼,成功後在Debug目錄下會生成libMySharedLib.so檔案。
二、動態連結庫的使用
1、建立工程new->c++ project->Executable->Empty Project.工程名為TestLib
2、編寫所需程式碼,並將相應的API標頭檔案(.h檔案)放到工程目錄下並載入到工程中。
main.cpp
- #include "testh.h"
- int main()
- {
- Test_a();
-
Test_b();
- Test_c();
- return 0;
- }
3、加入動態連結庫libMySharedLib.so右鍵工程Properites->C/C++ Build->Settings,然後如下圖
注意最右邊,庫的名稱libMySharedLib.so變為MySharedLib,庫的路徑就寫這個庫所在的路徑。
4、修改環境變數。
以上均做正確的話編譯連結是能通過的,但是在執行時會報錯error while loading shared libraries: libShared.so: cannot open shared object file: No such file or directory ,這時需要修改環境變數。在工程處右鍵,Run As->Run Configurations,選擇Environment,如下圖:
新加一個環境變數,名稱必需是 LD_LIBRARY_PATH,值為動態連結庫所在的路徑。
以上就完成了linux下生成動態連結庫和使用動態連結庫。
5. 執行結果