zoukankan      html  css  js  c++  java
  • 将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  如下图:

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

  • 相关阅读:
    php-ip
    第十三讲 服务寄宿
    第十二讲:服务寄宿
    第十一讲:大消息处理
    第十讲:绑定(信道)
    第九讲:消息契约
    第八讲:数据契约版本控制
    第七讲:数据契约(2)
    第六讲:数据契约
    第五讲:异步操作
  • 原文地址:https://www.cnblogs.com/yushengzhou/p/8662921.html
Copyright © 2011-2022 走看看