linux+创建共享库的链接,Linux上的C ++动态共享库

下面显示了共享的共享类库的示例。[h,cpp]和使用该库的main.cpp模块。这是一个非常简单的例子,makefile可以做得更好。但它有效并可能对您有所帮助:

shared.h定义了类:class myclass {

int myx;

public:

myclass() { myx=0; }

void setx(int newx);

int  getx();};

shared.cpp定义了getx / setx函数:#include "shared.h"void myclass::setx(int newx) { myx = newx; }int  myclass::getx() { return myx; }

main.cpp使用该类,#include #include "shared.h"using namespace std;int main(int argc, char *argv[]){

myclass m;

cout <

m.setx(10);

cout <

以及生成libshared.so和链接main与共享库的makefile:main: libshared.so main.o

$(CXX) -o main  main.o -L. -lshared

libshared.so: shared.cpp

$(CXX) -fPIC -c shared.cpp -o shared.o

$(CXX) -shared  -Wl,-soname,libshared.so -o libshared.so shared.o

clean:

$rm *.o *.so

要实际运行'main'并与libshared.so链接,您可能需要指定加载路径(或将其放在/ usr / local / lib或类似)。

以下指定当前目录作为库的搜索路径并运行main(bash语法):export LD_LIBRARY_PATH=../main

要查看程序是否与libshared.so链接,您可以尝试ldd:LD_LIBRARY_PATH=. ldd main

在我的机器上打印:~/prj/test/shared$ LD_LIBRARY_PATH=. ldd main

linux-gate.so.1 =>  (0xb7f88000)

libshared.so => ./libshared.so (0xb7f85000)

libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7e74000)

libm.so.6 => /lib/libm.so.6 (0xb7e4e000)

libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xb7e41000)

libc.so.6 => /lib/libc.so.6 (0xb7cfa000)

/lib/ld-linux.so.2 (0xb7f89000)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值