将c/c++代码编译成动态库文件libxxx.so

最近需要将从github上面下载下来的c/c++开源代码编译成动态库文件,然后利用的python的ctypes模块进行调用。

整个源码结构如下图:

如图目标是要将nmprkC.cpp里面的函数接口封装成动态库,文件相互依赖关系复杂,还好源码中提供了Makefile文件,但需要简单修改一下

找到Mikefile中生成 .o文件的位置

修改前:

修改后:

可以看到修改前后的区别是加入了 -fPIC参数(-fPIC 实现动态链接库与位置无关)

 

执行make后生成如下 .o目标文件:

 

然后利用目标文件.o生成动态库.so文件:

至此就可以得到可以使用的动态链接库文件 libnmprkc.so文件了

 

 

再说一哈:

刚开始直接使用的 :g++ -shared -o libnmprkc.so *.o命令,没有加 -lssl -lcrypto -pthread选项,结果使用 ldd -r libnmprkc.so 查看 libnmprkc.so 文件时发现好多地方没有编译进来undefined symbol  如下图:

 

是因为需要的库没有加进来,加上就好!

转载于:https://www.cnblogs.com/yushengzhou/p/8662921.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值