g++找不到共享库

g++ cannot find shared library

本文关键字:共享 找不到 g++      更新时间:2023-10-16

我很抱歉这是多余的,但似乎没有一个可用的答案能够解决我的问题。我正在尝试使用共享对象库编译一个可执行文件。共享对象库称为libsession.so,位于我编译可执行文件的同一目录中。为了编译和链接,我使用以下命令

g++ test_main.cpp -o program -std=c++11 -I ../src/base -L. -lsession

不幸的是,我在链接时遇到了找不到-lsession错误。如果我将命令更改为直接引用共享库,如下所示

g++ test_main.cpp -o program -std=c++11 -I ../src/base libsession.so

然后可执行文件编译/链接,一切正常。有人认为我做错了什么吗?

使用"-l"选项和指定文件之间的唯一区别名称是"-l"用"lib"answers".a"包围库并进行搜索几个目录。

https://gcc.gnu.org/onlinedocs/gcc-3.0/gcc_3.html#SEC16

实际上它遵循特定的命名约定,比如库名称前面应该有lib。因此,如果您将库名称更改为libsession,那么它将起作用。