Linux下C++打包so文件以及使用(Socket项目示例)

2017-09-22  本文已影响642人  第八区

简介

这里还是使用我们之前的Socket示例的代码:

content.png

socketLib项目打包so文件

这里我们主要看Makefile文件

libmysocket.so : XTcp.cpp XThread.h XTcp.h
    g++  -fPIC -shared -lpthread  -o $@  $+ -std=c++0x

.PHONY : clean
clean :
    -rm  libmysocket.so

sockUseLib 项目如何使用so

先说明两个项目都在/code目录下。我们还是重点看Makefile文件

main : main.cpp
    g++ -I/code/socketLib -L/code/socketLib -lmysocket   -o $@  $+

.PHONY : clean
clean :
    -rm  main

这里重点在与-I-L参数。在前面gcc编译参数中我们讲到-I指的是头文件的搜索目录,-L是动态库的搜索目录。
这里我们就成功的进行了编译。
然后运行./main发现报错

./main: error while loading shared libraries: libmysocket.so: cannot open shared object file: No such file or directory

这句话的意思是找不到libmysocket.so这个动态库文件。虽然我们链接成功了。但是运行时候找不到动态库。这里有几个方法:

关于LD_LIBRARY_PATH可参考Linux环境变量

上一篇 下一篇

猜你喜欢

热点阅读