將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  如下圖:

 

是因為需要的庫沒有加進來,加上就好!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM