(索拉里斯) LD:致命:...版本"GCC_4.2.0"不存在

(solaris) ld: fatal: ... version 'GCC_4.2.0' does not exist

本文关键字:不存在 GCC 版本 索拉里斯 LD 致命      更新时间:2023-10-16

我第一次尝试在这台机器上编译一个c++程序(这不是我的(,所以我写了一个简单的hello世界。我的编译命令出现错误,

>g++ testing.cpp -L/usr/local/lib
ld: fatal: file /usr/local/lib/libgcc_s.so: version 'GCC_4.2.0' does not exist:
    required by file /usr/local/lib/libstdc++.so

但我有东西:

>file /usr/local/lib/libgcc_s.so
/usr/local/lib/libgcc_s.so:     ELF 32-bit LSB dynamic lib 80386 Version 1 [FPU], dynamically linked, not stripped

如果我做了以下任何一件事,我会咯咯笑:

>g++ testing.cpp
>g++ testing.cpp -L/usr/sfw/bin
>g++ testing.cpp -L/local/bin

我得到了同样的错误(目录没有改变,可能是因为bin中没有libgcc_s?(:

ld: fatal: file /usr/local/lib/gcc/i386-pc-solaris2.10/4.3.3/../../../libgcc_s.so: version 'GCC_4.2.0' does not exist:
    required by file /usr/local/lib/gcc/i386-pc-solaris2.10/4.3.3/../../../libstdc++.so

位于/usr/local/lib/gcc/i386-pc-solaris2.10/中,参见3.4.64.3.3

我看到/usr/local/lib/libcc_s.so的符号链接指向2001年创建的libgcc_s.so.1

我在其他地方看到了以下检查版本的方法,但它什么也不返回:

/usr/local/lib>strings libgcc_s.so.1 | grep GCC

我的问题是:

  1. 到底发生了什么?链接器是否接受"有点旧"的库,但拒绝真正旧的库,比如2001?链接器会因为一个版本太新而感到不安吗
  2. 有什么方法可以判断libgcc_so的版本吗
  3. 我可以通过创建符号链接来作弊并强迫它使用当前安装的版本吗?如果是,我应该创建什么符号链接

感谢您的阅读和任何建议。

我怀疑是gcc库,请检查操作系统的版本(32/64位(并相应地安装gcc-lib。

哇。我觉得很傻。我所需要做的就是通过将命令更改为来指定要使用的g++的特定版本

/usr/sfw/bin/g++ testing.cpp

大大!程序成功编译并运行。

如果其他人有这个问题,运行which g++并尝试各种选项可能会有所帮助。

>which g++ 
g++ is /usr/local/bin/g++
g++ is /usr/sfw/bin/g++
g++ is /local/bin/g++
g++ is /usr/local/bin/g++
g++ is /usr/sfw/bin/g++
g++ is /local/bin/g++
g++ is /usr/local/bin/g++
g++ is /usr/sfw/bin/g++
g++ is /local/bin/g++
g++ is /usr/local/bin/g++
g++ is /usr/sfw/bin/g++ 
g++ is /local/bin/g++