无法使ld找到库

时间:2017-01-06 03:41:33

标签: c++ linux build g++

我正在尝试在没有sudo权限的Linux机器上从源代码构建一个包,但是链接器找不到必要的库:

  

ld:找不到-lstdc ++

我找到了一些关于这个问题的解决方案,涉及重新安装库,但是如果没有sudo,我就无法跟进。

libstdc++.so.6/usr/lib中存在

/usr/lib64ld -lstdc++ --verbose命令输出:

......
attempt to open /usr/lib64/libstdc++.so failed
attempt to open /usr/lib64/libstdc++.a failed
attempt to open /usr/local/lib/libstdc++.so failed
attempt to open /usr/local/lib/libstdc++.a failed
attempt to open /lib/libstdc++.so failed
attempt to open /lib/libstdc++.a failed
attempt to open /usr/lib/libstdc++.so failed
attempt to open /usr/lib/libstdc++.a failed
ld: cannot find -lstdc++

所以我做了一个符号链接:

ln -s /usr/lib/libstdc++.so.6 ~/.local/lib/libstdc++.so

然后将路径添加到LIBRARY_PATH:

export LIBRARY_PATH='/home/xxx/.local/lib'

但是编译只打印相同的输出(它没有在添加的路径中搜索库)。在编译之前我也试过这些但没有成功:

export LD_FLAGS='-L/home/xxx/.local/lib'
export LIBS='-lstdc++'
export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:/home/xxx/.local/lib'

我做错了什么?或者我在这里误解了什么?

1 个答案:

答案 0 :(得分:0)

您正在编译哪个架构? 32位还是64位?因为您使用的是64位系统,但是链接了32位变体,您需要仔细检查。

什么' ld -L / home / xxx / .local / lib --verbose -lstdc ++'说?

BTW:最好让机器管理员安装开发包,你甚至可能会错过头文件和其他文件。