Ubuntu 12.04安装gcc/g++ 4.8.1(解决install gcc-4.8时error: gnutls_handshake() failed: A TLS packet...)

本文介绍如何在 Ubuntu 12.04 中通过命令行工具安装 GCC 4.8,以支持完整的 C++11 功能。包括添加 PPA、更新软件包列表、安装 GCC 4.8 的步骤,同时解决安装过程中可能遇到的 GnuTLS 错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料:http://askubuntu.com/questions/271388/how-to-install-gcc-4-8-in-ubuntu-12-04-from-the-terminal (*)

http://walkerqt.blog.51cto.com/1310630/1276346


由于gcc 4.8之后才可以完整实现C++11,所以我决定将gcc升级。

首先声明,我是linux菜鸟,接触linux整……一周。遇到问题都是通过google解决的,所以无法从深层次解释为什么这么做。

我在VMware中和个人的笔记本上各安装了一次,ubuntu都是12.04版本,但是VMware碰到了较多问题,而本本只是参照资料1就完美安装,至于为什么……我也不知道o(╯□╰)o


标准步骤:

1. 首先查看当前gcc的版本: gcc --version (一般是4.6左右)

2. Adding the toolchain/test PPA: 

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

3. 更新,然后安装即可:

sudo apt-get update
sudo apt-get install gcc-4.8



但是在本人安装时系统报错:
error: gnutls_handshake() failed: A TLS packet with unexpected length was
       received.
查询得知这是  GnuTLs or pycurl bug


解决方法:

顺序在终端执行下列操作:

sudo apt-get install build-essential fakeroot dpkg-dev
mkdir ~/python-pycurl-openssl
cd ~/python-pycurl-openssl
sudo apt-get source python-pycurl
sudo apt-get build-dep python-pycurl
sudo apt-get install libcurl4-openssl-dev
sudo dpkg-source -x pycurl_7.19.0-4ubuntu3.dsc
cd pycurl-7.19.0
# remove the HAVE_CURL_GNUTLS=1 in the following file
sudo vim debian/patches/10_setup.py.dpatch
# remove the HAVE_CURL_GNUTLS=1 in the following file
sudo vim setup.py
# replace all gnutls into openssl in the following file
sudo vim debian/control
sudo dpkg-buildpackage -rfakeroot -b
sudo dpkg -i ../python-pycurl_7.19.0-4ubuntu3_amd64.deb
红字部分是由前面步骤(the dpkg-buildpackage)决定的,需要根据个人对应文件夹下的.deb文件名称修改

然后执行标准步骤,应该就ok了!g++的更新步骤相同,不过是把gcc 换成 g++。


更换gcc g++编译器默认版本

建立软链接即可:

        删除gcc-4.6的软连接文件/usr/bin/gcc。(只是删除软连接)
        命令:sudo rm /usr/bin/gcc
        然后建一个软连接,指向gcc-4.4。
        命令:sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
        ok了,现在用命令:gcc -v  显示当前默认版本



<think>嗯,用户遇到了Ubuntu Precise的InRelease 404错误,需要解决这个问题。首先,我得回忆一下这个错误通常是什么原因引起的。404错误意味着资源未找到,可能跟软件源有关。Ubuntu Precise(12.04)已经停止官方支持,所以默认的软件源可能被移走了,导致无法访问。 接下来,我需要检查用户使用的软件源是否正确。用户可能还在使用旧的repository链接,比如archive.ubuntu.com或者security.ubuntu.com,这些可能已经不可用了。正确的做法应该是将源更换为old-releases.ubuntu.com,这是Ubuntu为过版本保留的存档。 然后,用户需要修改/etc/apt/sources.list文件,替换里面的URL。可能需要用sudo权限编辑这个文件,将所有archive.ubuntu.com和security.ubuntu.com的链接替换为old-releases的。之后运行sudo apt-get update来更新软件列表。 另外,用户可能在安装某些软件依赖i386架构的库,但如果没有启用多架构支持,可能会出问题。这候需要运行sudo dpkg --add-architecture i386,然后安装相关的库,比如libc6:i386等,如引用[2]提到的。 还有可能用户尝试安装的软件包已经不存在于旧源中,这候可能需要手动下载,如引用[4]中的wget命令示例,或者寻找替代的安装方法,比如使用PPA或者其他第三方源。不过添加PPA需要谨慎,因为可能不兼容旧系统。 此外,用户可能还需要清理旧的软件包列表,使用sudo apt-get clean,或者删除/var/lib/apt/lists下的部分文件,再重新update。如果遇到依赖问题,可能需要运行sudo apt-get install -f来修复。 需要注意的是,由于Precise已经停止支持,继续使用可能存在安全风险,建议升级到更高版本。但如果必须使用,只能依靠old-releases源或自行寻找解决方案。引用[3]提到安装wxPython的问题,可能类似,需要特定方法解决。 总结步骤:更换软件源到old-releases,更新,处理多架构依赖,清理缓存,修复依赖。同提醒用户升级系统的建议。</think>### Ubuntu Precise InRelease 404 错误解决方案 Ubuntu 12.04(代号Precise Pangolin)已于2017年结束官方支持[^1],因此默认软件源可能失效。以下是分步解决方案: 1. **修改软件源地址** ```bash sudo sed -i 's/archive.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list sudo sed -i 's/security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list ``` 这会将所有官方源替换为旧版本存档仓库。 2. **更新软件包列表** ```bash sudo apt-get update ``` 3. **处理多架构依赖问题(可选)** 若需安装32位库(如某些旧版软件依赖): ```bash sudo dpkg --add-architecture i386 sudo apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386 # 引用[2] ``` 4. **清理缓存(可选)** ```bash sudo apt-get clean sudo rm -rf /var/lib/apt/lists/* ``` 5. **强制修复依赖关系** ```bash sudo apt-get install -f ``` --- ### 注意事项 - 若需安装特定软件(如wxPython),可能需要手动下载编译。例如: ```bash wget https://example.com/precise-engine.tar.gz # 类似引用[4]的格式 tar -xzvf precise-engine.tar.gz ``` - 强烈建议升级Ubuntu 18.04或更高版本以获得安全更新。若必须使用12.04,建议通过虚拟机或容器隔离运行。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值