我正在尝试在没有sudo权限的Linux机器上从源代码构建一个包,但是链接器找不到必要的库:
ld:找不到-lstdc ++
我找到了一些关于这个问题的解决方案,涉及重新安装库,但是如果没有sudo,我就无法跟进。
libstdc++.so.6
和/usr/lib
中存在 /usr/lib64
,ld -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'
我做错了什么?或者我在这里误解了什么?
答案 0 :(得分:0)
您正在编译哪个架构? 32位还是64位?因为您使用的是64位系统,但是链接了32位变体,您需要仔细检查。
什么' ld -L / home / xxx / .local / lib --verbose -lstdc ++'说?
BTW:最好让机器管理员安装开发包,你甚至可能会错过头文件和其他文件。