Linux下C 動態庫

2021-07-26 10:38:07 字數 1359 閱讀 5644

本人是剛畢業的大學生一枚,這是寫的第一篇部落格,若有不對的地方,懇請指正!

由於工作原因,不得已在linux下開發專案,而且還是用c++,對於c++,本人是有一些白痴的。專案完成,在此做一下總結,給自己乙個交代。

首先先對動態庫方面的只是做乙個總結

1、動態庫的簡單介紹

首先,動態庫就是動態鏈結庫,本人有些懶,一下都成為動態庫。在linux下,動態庫都以so結尾,即shared object。它是在程式執行的時候裝入的,效率高,靈活性很好。我們可以根據自己的需求,製作符合自己需求的動態庫,方便自己的使用。

例子的簡單介紹(這個例子本人親測,完全沒問題):

材料:test.h檔案,test1.cpp檔案,test2.cpp檔案(.h檔案是類和函式的宣告,.cpp檔案是類和函式的實現)

目標檔案:libtest.so(此檔案有自己的命名規則,必須以lib開頭,字尾名是.so)

**:test.h:

#ifndef test_h

#define test_h

#include

#include

#include

#include

using namespace std;

class student

;void say();

#endif

test1.cpp:

#include "test.h"

#include

using namespace std;

student::student()

void student::setname(string s_name)

string student::getname()

void student::speak()

編寫makefile檔案,

makefiletest:

userfile=./demo.cpp

endfile=./test

$(endfile):$(userfile)

g++ $(userfile) -l. -ltest -o $(endfile)

執行makefile檔案:

make -f makefiletest

生成test可執行程式,執行可執行程式,./test,輸出結果。

注:讀者在執行make -f makefiletest時,可能會出現.so--cannot open shared object file: no such file or directory錯誤,這個錯誤是由於系統找不到libtest.so動態庫造成的,讀者可以輸入如下命令,export ld_library_path=libtest.so的當前目錄,不過此方法只對當前會話起作用,當然也有其他的方法,讀者可以自行在網上搜一下。

Linux下動態載入庫

七月 9th,2011 以前看到過windows下載入動態庫的例子,linux下沒有特別關注過。動態載入庫有很多好處,比如通過讀取配置檔案,按照配置資訊來為指定型別或指定目錄下的資料使用指定的動態庫方法,既實現了程式的松耦合,也方便擴充套件。在linux下動態載入庫要使用到dl庫。使用的方法記錄如下...

Linux下建立動態庫

在linux下動態庫檔案字尾為.so,其中so代表 shared object,即共享目標檔案。動態庫的特點就是在系統記憶體中,只會存在動態庫的乙個副本。例如 程式a,b允許時都需要動態庫lib.so的支援。當a程式執行時,由於系統記憶體中沒有發現lib.so庫,所以需要載入lib.so。此時b程式...

C 下新增C 動態庫

這個網上很多。但是沒有能執行起來的。自己經過一周多的摸索進行稍微總結下。首先是 c 下的宣告 標頭檔案 extern c declspec dllexport intadd intsm cpp檔案 intadd intsm 標頭檔案 extern c declspec dllexport intad...