【问题标题】:/usr/bin/ld: cannot find/usr/bin/ld: 找不到
【发布时间】:2011-07-16 19:46:02
【问题描述】:

我创建了一个.so 文件并将其放在/opt/lib 位置,然后当我尝试使用以下命令编译我的主程序时,将此路径添加到LD_LIBRARY_PATH

g++ -Wall -I/home/alwin/Development/Calculator/ main.cpp -lcalc -o calculator

我收到以下错误:

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

有人可以帮我解决这个问题吗? 我使用代码块 IDE 创建了共享库

【问题讨论】:

    标签: c++ linker shared-libraries


    【解决方案1】:

    -L/opt/lib 添加到您的编译器参数中,这会使编译器和链接器在该文件夹中搜索libcalc.so 的路径。

    【讨论】:

    • 哦,是的,我也试过了,但我还是遇到了同样的错误:( 请参阅以下 alwin@alwin-laptop:~/Desktop/CPPTest$ g++ -Wall -I/home/alwin/Development/计算器/ -L/opt/lib main.cpp -libcalc.so -o 计算器 /usr/bin/ld: 找不到 -libcalc.so collect2: ld 返回 1 个退出状态
    • @Jay 是 -lcalc,而不是 -libcalc.so
    【解决方案2】:

    当你调用 gcc 时,它应该说

    g++ -Wall -I/home/alwin/Development/Calculator/ -L/opt/lib main.cpp -lcalc -o calculator
    
    not -libcalc.so 
    

    我对自动生成的品牌也有类似的问题。

    您可以创建从编译目录到库目录的软链接。 然后图书馆就变成了“本地”。

    cd /compile/directory
    
    ln -s  /path/to/libcalc.so libcalc.so
    

    【讨论】:

      【解决方案3】:

      您需要添加-L/opt/lib 以告诉ld 在那里查找共享对象。

      【讨论】:

      • 就像我在之前的评论中已经提到的那样,我确实添加了 -L/opt/lib 还有什么我遗漏的:(
      【解决方案4】:

      @阿尔文·多斯 您应该在 -l 之前提供 -L 选项。你可能会反其道而行之。试试这个:)

      【讨论】:

        猜你喜欢
        • 2021-05-07
        • 2012-05-17
        • 2020-04-14
        • 2012-03-26
        • 2018-12-13
        • 2015-09-22
        • 2020-01-19
        • 2012-01-14
        • 2017-02-03
        相关资源
        最近更新 更多