gcc g++找不到共享库

2hh7jdfx  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(147)

我很抱歉这是多余的,但没有一个可用的答案似乎能够解决我的问题。我正在尝试使用共享对象库编译可执行文件。共享对象库名为libsession.so,位于我正在编译可执行文件的同一目录中。为了编译和链接,我使用以下命令
g++ test_main.cpp -o program -std=c++11 -I ../src/base -L. -lsession
不幸的是,我在链接时得到了 cannot find -lsession 错误。如果我将命令更改为直接引用共享库,如下所示
g++ test_main.cpp -o program -std=c++11 -I ../src/base libsession.so
然后可执行文件编译/链接,一切正常。有没有人知道我做错了什么?

epfja78i

epfja78i1#

使用“-l”选项和指定文件名之间的唯一区别是,“-l”使用“lib”和“.a”包围库并搜索多个目录。
https://gcc.gnu.org/onlinedocs/gcc-3.0/gcc_3.html#SEC16

8zzbczxx

8zzbczxx2#

实际上,它遵循特定的命名约定,如库名称前面应该是lib。因此,如果您将库名称更改为libsession.so,它将正常工作。

相关问题