这个问题似乎可以在Google容易找到的几个问题和其他地方正确解决,但是由于以下原因,我认为该解决方案并不令人满意。但是为了完整起见,我添加了一些相关链接:
/ubuntu/138284/how-to-downgrade-a-package-via-apt-get /ubuntu/428772/how-to-install-specific-version-of -some-package / 428778 /ubuntu/26498/choose-gcc-and-g-version ...
和别的。
但是,这个问题是关于在Kali Linux中安装非常特定的GCC版本,该版本似乎不容易作为特定的软件包使用。特别是,问题在于如何安装6.3.0版本,因为我需要使用此版本来编译特定程序:https ://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/
(作为一个奖励问题,如果有一种更理性的方法来解决此特定问题而不使用其他版本的GCC,请随时回答,但是我相信这个问题是笼统的,无论如何我都想知道如何解决如何正确建立上述程序链接)
可通过以下方式确定可用于安装任何软件包的版本,例如gcc:
apt-cache showpkg gcc
它将在“版本:”下列出可用版本,例如
4:7.2.0-1d1
4:4.9.2-2
安装就像发行一样简单
apt-get install gcc:4:4.9.2-2
这将安装旧版本4:4.9.2-2,只需(我相信)覆盖7.2.0-1d1安装(如果存在)。
要使版本4:4.9.2-2完全可用,我必须添加deb
http://old.kali.org/kali sana main non-free contrib
到
/etc/apt/sources.list
文件中,然后运行apt-get update
。
但是,如果未列出我需要的版本怎么办?
我一直在尝试各种来源,例如在这里找到的那些来源:http: //snapshot.debian.org/以及来自Google搜索的各种其他问题和网站。
他们中的大多数给我忽略或错误,例如如下
Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease
即使这行得通,安装特定版本的方法似乎也很糟糕,因为添加一些任意源可能没有我想要的特定版本。
如果我在snapshot.debian.org上搜索gcc,则只会得到很旧的版本:http : //snapshot.debian.org/package/gcc/
我最终对这种方法感到沮丧,并从源代码压缩包中编译了GCC 6.3.0。编译成功,但是接下来我要面对如何安装它。我谨慎运行make install
,因为我担心它会篡改apt
和dpkg
,并可能破坏系统。
相反,我尝试直接从build目录运行它。我试图简单地将构建目录添加为PATH中的第一个条目,但这没有用。然后,我尝试重命名gcc-6.3.0可执行文件所在的位置/usr/bin/gcc
并进行符号链接/usr/bin/gcc
。这带来了以下问题:
cc: error trying to exec 'cc1': execvp: No such file or directory, which
我的PATH中的另一个条目已修复此问题。
然后,我得到这个错误:
/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory
我认为是由于中缺少条目/usr/lib/gcc/x86_64-linux-gnu
。我尝试将符号链接从6设置为6.3.0,但这还不够。我还尝试使用cp -R
相同的结果实际复制所有内容。
这应该是64位程序,但我也认为相同
/usr/lib/gcc/i686-linux-gnu
。
我确定我可以开始strace
尝试从哪里打开文件,读取日志文件,读取源代码,最终我想我能够弄清楚如何将一个构思不佳的解决方案结合在一起。但是,如果有人可以告诉我如何以理智的方式做到这一点,那就太好了。