【发布时间】:2017-05-20 19:04:49
【问题描述】:
我正在尝试在没有 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'
我做错了什么?或者我在这里误解了什么?
【问题讨论】:
-
修复 Linux 机器的开发配置和环境,而不是试图破解它。如果您没有 sudo 权限,那仅意味着您无法在该机器上拥有合理的开发环境。寻找另一台配置正确的机器进行开发。
-
也许请您的系统管理员运行
ldconfig。但 Sam Varshavchik 确实是对的。