【问题标题】:g++ cannot find shared libraryg++ 找不到共享库
【发布时间】:2016-08-24 22:01:00
【问题描述】:

我很抱歉这是多余的,但可用的答案似乎都无法解决我的问题。我正在尝试使用共享对象库编译可执行文件。共享对象库称为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

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

【问题讨论】:

    标签: c++ c++11 gcc linker g++


    【解决方案1】:

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

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

    【讨论】:

    • 此外,在这些情况下,一个好的做法是使用-v 标志(详细)以查看搜索路径是什么(以及其他有用信息)。
    • 太棒了!因此,看起来这不适用于动态链接库(共享对象)。这就是问题所在。谢谢。
    猜你喜欢
    • 2013-04-15
    • 2012-08-13
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多