事实证明,"make install"——安装并暗示目标"install target libstdc++v3"的make target实际上并不意味着您已经准备好了.
我有一段时间一直在想我做错了什么,因为我认为这样一个make target会帮我做到这一点.
事实证明,"make install"——安装并暗示目标"install target libstdc++v3"的make target实际上并不意味着您已经准备好了.
我有一段时间一直在想我做错了什么,因为我认为这样一个make target会帮我做到这一点.
LD_LIBRARY_PATH
environment variableGCC要求您在找不到正确的版本时手动告诉它库的位置,这可以通过几种方式实现.一个是将其添加到LD_LIBRARY_PATH
.
export LD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PATH"
对一些人来说,图书馆的路径将是/usr/local/lib64/
.其他人则报告说,图书馆路径/usr/lib/x86_64-linux-gnu/
为他们工作.
LD_LIBRARY_PATH
?编译和安装GCC时,它会将库放在其中一个目录中,但仅此而已.根据FAQs for libstdc++
,我们得到的错误意味着动态链接器找到了libstdc++
共享库的错误版本.因为链接器找不到正确的版本,我们必须告诉它在哪里可以找到libstdc++
库.
解决这个问题的最简单方法是使用LD_LIBRARY_PATH环境变量,这是一个以冒号分隔的目录列表,链接器将在其中搜索共享库.
还有其他方法可以解决这个问题.如果阅读make输出,您可以在安装gcc
时找到此解决方案和其他简要提及的解决方案:
图书馆已安装在:
/usr/local/lib/../lib32
如果您碰巧想要链接给定目录LIBDIR中已安装的库,则必须使用libtool并指定库的完整路径名,或者在链接过程中使用"-LLIBDIR"标志并至少执行以下操作之一:
- 在执行过程中将LIBDIR添加到"LD_LIBRARY_PATH"环境变量中
- 在链接过程中将LIBDIR添加到"LD_RUN_PATH"环境变量中
- 使用"-Wl,-rpath-Wl,LIBDIR"链接器标志
- 让系统管理员将LIBDIR添加到"/etc/ld".所以形态'
有关更多信息,请参阅有关共享库的任何操作系统文档,例如ld(1)和ld.所以(8)手册页.
Grr,这很简单!还有,"如果你碰巧想链接到已安装的库",真的吗?