2016-08-24 96 views
2

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

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

Unforutanely,我得到的链接时找不到-lsession错误。如果更改命令直接引用共享库如下

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

然后可执行编译/链接和一切都很好。有没有人有任何想法,我可能做错了什么?

回答

1

使用“-l”选项并指定一个文件名 之间的唯一区别是,“-l”包围库“LIB”和'.A”和搜索 几个目录。

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

+2

此外,在这些情况下,一个好的做法是使用'-v'标志(详细)才能看到搜索路径是什么(amogst其他有用的信息)。 –

+0

太棒了!所以,看起来这不适用于动态链接库(共享对象)。这就是问题所在。谢谢。 – cirrusio