为编译器设置 libstdc++.so.6 位置

Posted

技术标签:

【中文标题】为编译器设置 libstdc++.so.6 位置【英文标题】:Set libstdc++.so.6 location for compiler 【发布时间】:2018-04-29 20:05:21 【问题描述】:

在使用 GCC4.9 构建 c++ 包时,我收到以下错误消息。

'/usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /local/p4clients/pkgbuild-S1NVe/workspace/build

我在 makefile 中用不同的 Gcc 编译器位置覆盖了 CC 和 CXX,在不同的文件夹下也有相同的 so 文件。 我还在 LD_LIBRARY_PATH 中添加了该文件夹位置,但编译器仍在使用 /usr/lib64/ 而不是 /mypath/lib64/usr/lib64/ 是 GCC4.5。 我如何告诉编译器使用来自不同位置的 so 文件。

【问题讨论】:

在 makefile 中添加 LDFLAGS += -static-libstdc++ -static-libgcc 后出现新错误 fx_zlib_crc32.c:(.text+0x6d6): first defined here 【参考方案1】:

您需要为您的操作系统构建的共享对象版本。您尝试使用的 DSO 与 GCC 4.5 不兼容。它是针对 GCC 4.9 或更高版本编译的。更换系统libstdc++.so.6库会导致整个系统不支持。

【讨论】:

我已经在构建共享对象,唯一的问题是编译器只使用了一次旧版本(我在构建机器上有两个版本的 gcc 编译器)

以上是关于为编译器设置 libstdc++.so.6 位置的主要内容,如果未能解决你的问题,请参考以下文章

arm-linux-gcc xx.c 缺少libstdc++.so.6

libstdc++.so.6:未找到版本 GLIBCXX_3.4.20

VS2019编译的c++程序如何指定库文件?

xtrabackup 调试报错

如何更改 libstdc++.so.6 的版本?

ldd 可执行文件如何找到 /usr/lib64/libstdc++.so.6?