and*_*rew 0 c++ boost dynamic-linking dynamic-library c++11
我想在linux上为c ++程序创建一个动态库.在c ++程序/系统中,我使用libconfig ++库,libpqxx库,一些boost和c ++ 11.
我的步骤:1)
g++ -Wall -I/usr/local/include/ -std=c++0x -lconfig++ -Wall -lpqxx -lpq -fPIC -c ../SourceFiles/DBHandler.cpp ../SourceFiles/ParamServer.cpp ../SourceFiles/Functions.cpp
Run Code Online (Sandbox Code Playgroud)
2)
g++ -shared -Wl,-soname,libctest.so.1 -o libctest.so.1.0 *.o
Run Code Online (Sandbox Code Playgroud)
3)
ln -sf libctest.so.1.0 libctest.so.1
Run Code Online (Sandbox Code Playgroud)
4)
ln -sf libctest.so.1.0 libctest.so
Run Code Online (Sandbox Code Playgroud)
5)编译
g++ -Wall -I/path/to/include-files -L/path/to/libraries program.cpp -I/usr/local/include/ -std=c++0x -lconfig++ -lpqxx -lpq -lctest -o prog
Run Code Online (Sandbox Code Playgroud)
执行上面的命令后:
/usr/bin/ld: cannot find -lctest
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
以下是参考: 在此处输入链接描述
在第5步中,您忘记-L.在当前目录中查找库.
默认情况下,搜索库时仅使用[long]系统目录列表.
您还需要在执行程序之前添加.到LD_LIBRARY_PATH环境变量中,以便在运行时搜索当前目录.运行ldconfig将避免这种情况,但如果您只是测试您的库并且不想持续影响您的系统,我会坚持这种LD_LIBRARY_PATH方法.
另一种方法是将您的库"安装"到其中一个目录中,例如/usr/local/lib(或等效的).您应该ldconfig在执行此操作后使用,以便为您设置动态库缓存和所有符号链接.这是规范方法,但在所述库的迭代开发期间可能不适合.
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |