我想在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


2)

g++ -shared -Wl,-soname,libctest.so.1 -o libctest.so.1.0   *.o


3)

ln -sf libctest.so.1.0 libctest.so.1


4)

ln -sf libctest.so.1.0 libctest.so


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


执行以上命令后:

/usr/bin/ld: cannot find -lctest
collect2: ld returned 1 exit status


我究竟做错了什么?

这里是参考:
enter link description here

最佳答案

在步骤5中,您忘记了-L.在当前目录中查找库。

默认情况下,搜索库时仅使用[长]系统目录列表。

您还需要在执行程序之前将.添加到LD_LIBRARY_PATH环境变量,以便在运行时也搜索当前目录。运行ldconfig可以避免这种情况,但是如果您仅测试您的库并且不想持久影响您的系统,我将坚持使用LD_LIBRARY_PATH方法。

一种替代方法是将您的库“安装”到这些目录之一,例如/usr/local/lib(或等效目录)。完成此操作后,应使用ldconfig,以便为您设置动态库缓存和所有符号链接。这是规范的方法,但可能不适用于该库的迭代开发。

关于c++ - 如何在Linux上为C++创建动态库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22001017/

10-11 00:20