ubuntu gcc(4.6/5.2)源码安装(version `CXXABI_1.3.8' not found)

本文内容

  • version `CXXABI_1.3.8’ not found (required by …)
  • gcc源码安装,到指定目录

由于服务器权限各种问题需要定制gcc开发环境,问题如下:

  1. 工作需要使用其他部门的C++SDK,他们有自己的编译服务器,但是代码保密原因不能给我服务器权限
  2. 代码需要上传到他们制定的服务器上面运行,但是不能修改任何于是需要自己源码安装gcc到自己的用户目录下

version `CXXABI_1.3.8’ not found (required by …)这个错误,
这个标志位至少GCC 4.9以上(这个问题安装gcc 4.9以上的版本即可)。
由于不能覆盖系统的gcc所以需要自己$HOME目录下面源码安装gcc

  1. 下载gcc tar gz 例如gcc 5.2
  2. 最好看下官网的安装介绍,我由于没看第一次就安装失败了:configure的时候没有在外层目录

Many people rush into trying to build GCC without reading the
installation docs properly and make one or more of these com

<think>好的,我现在需要解决用户提到的“cxxabi_1.3.8找不到”的问题。首先,我得理解这个错误的具体情况。用户可能是在运行某个程序或编译代码时遇到了动态链接库缺失的问题,特别是libstdc++中的cxxabi相关库。 首先,我应该回忆常见的库缺失错误的解决方法。通常这类问题可能是因为系统缺少对应的库文件,或者库的版本不兼容,或者路径配置有问题。接下来,我需要分步骤思考可能的解决方案。 第一步,确认错误信息的具体内容。用户提到的是“cxxabi_1.3.8 missing”,这通常指的是libstdc++的某个版本中的符号或库文件缺失。CXXABI是C++的ABI(应用二进制接口)相关的内容,可能涉及到GCC的版本问题。 接下来,我应该考虑可能的解决方法。首先想到的是更新或安装对应版本的libstdc++。不同的Linux发行版有不同的包管理工具,比如Ubuntu/Debian的apt,CentOS/RHEL的yum或dnf,Arch的pacman等。用户需要根据他们的系统安装相应的库。 然后,检查系统中是否已经安装了该库,但可能路径不在动态链接器的搜索路径中。这时候需要更新ldconfig缓存,或者添加库路径到LD_LIBRARY_PATH环境变量中。不过,修改LD_LIBRARY_PATH可能需要谨慎,因为它会影响整个系统的库查找。 另一个可能性是用户安装的软件依赖于较新版本的libstdc++,而系统中安装的版本较旧。这时需要升级GCC或者安装更新的libstdc++版本。例如,在Ubuntu上,可以添加PPA源来获取更新的GCC版本。 此外,用户可能在使用第三方软件或自行编译的程序,这些程序可能需要特定版本的库。这时候可能需要手动下载或编译所需的库文件,并将其放置在正确的位置。不过,手动操作库文件可能存在风险,需注意兼容性问题。 同时,我需要考虑用户可能混淆了库的版本命名。例如,libstdc++.so.6可能包含不同的CXXABI版本,比如CXXABI_1.3.8可能属于某个特定的GCC版本。因此,可能需要确认当前安装GCC版本是否支持所需的CXXABI。 最后,可能还需要检查程序的编译选项,确保没有静态链接库导致的问题,或者是否有其他依赖项缺失。 总结起来,解决步骤可能包括:更新系统库,安装特定版本的libstdc++,检查库路径,升级GCC,或者重新编译程序。需要用户根据具体情况尝试不同的方法,并注意备份系统以防万一。</think>关于`cxxabi_1.3.8`找不到的问题,通常与**C++标准库版本不匹配**相关,尤其是`libstdc++`的版本问题。以下是分步解决方案: --- ### **1. 确认系统环境与错误类型** - **错误表现**:运行程序时提示类似`undefined symbol: __cxxabiv1::__class_type_info::__do_find_...`或`libstdc++.so.6: version CXXABI_1.3.8 not found`。 - **原因**:程序依赖的`libstdc++`版本高于系统当前安装的版本[^2]。 --- ### **2. 检查当前GCC和libstdc++版本** - 执行以下命令查看`libstdc++`支持的CXXABI版本: ```bash strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep CXXABI ``` 若输出中未包含`CXXABI_1.3.8`,说明需要升级GCC和`libstdc++`。 --- ### **3. 升级GCC和libstdc++** #### **Ubuntu/Debian系统** 1. 添加较新的GCC源并更新: ```bash sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update ``` 2. 安装GCC 9或更高版本: ```bash sudo apt install gcc-9 g++-9 ``` 3. 更新动态链接库: ```bash sudo ldconfig ``` #### **CentOS/RHEL系统** 1. 安装`devtoolset`(需启用EPEL仓库): ```bash sudo yum install centos-release-scl sudo yum install devtoolset-9 ``` 2. 启用新版本GCC: ```bash scl enable devtoolset-9 bash ``` --- ### **4. 手动替换libstdc++.so.6(备用方案)** - 从高版本GCC中复制`libstdc++.so.6`: ```bash cp /path/to/new/gcc/libstdc++.so.6 /usr/lib64/ ``` - 更新符号链接: ```bash ln -sf /usr/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6 ``` > **注意**:此操作可能导致系统不稳定,需谨慎操作[^1]。 --- ### **5. 验证修复** 重新运行程序或检查库版本: ```bash strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep CXXABI_1.3.8 ``` 若输出包含`CXXABI_1.3.8`,则问题已解决。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值