如何在 Kali Linux 中安裝特定版本的 GCC?
這個問題似乎在幾個問題和Google很容易找到的其他地方得到了正確解決,但由於下面解釋的原因,我沒有找到令人滿意的解決方案。但為了完成,我已經包含了一些相關連結:
https://askubuntu.com/questions/138284/how-to-downgrade-a-package-via-apt-get https://askubuntu.com/questions/428772/how-to-install-specific-version-of-some-package/428778 https://askubuntu.com/questions/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/
我最終對這種方法感到沮喪,並從原始碼 tarball 編譯了 GCC 6.3.0。編譯成功,但是我面臨如何安裝它。我對執行持謹慎態度,
make install
因為我擔心它會篡改apt
並dpkg
可能破壞系統。相反,我嘗試直接從建構目錄執行它。我試圖簡單地將建構目錄添加為我的 PATH 中的第一個條目,但這不起作用。然後,我嘗試重命名
/usr/bin/gcc
並從/usr/bin/gcc
我的 gcc-6.3.0 執行檔所在的位置進行符號連結。這提出了以下問題: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
查看它嘗試從哪裡打開文件、讀取日誌文件、讀取原始碼,最終我想我能夠弄清楚如何將一個構思不佳的解決方案組合在一起。但是,如果有人能以理智的方式告訴我如何做到這一點,那就太好了。
如何在 Kali Linux 中安裝特定版本的 GCC?
GCC 6 在 kali linux 上可用,它可以按如下方式安裝:
apt install g++-6 gcc-6
在 gcc6 和 gcc7 之間切換
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 1 --slave /usr/bin/g++ g++ /usr/bin/g++-7 update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 2 --slave /usr/bin/g++ g++ /usr/bin/g++-6 update-alternatives --config gcc
樣本輸出:
There are 2 choices for the alternative gcc (providing /usr/bin/gcc). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/gcc-6 2 auto mode 1 /usr/bin/gcc-6 2 manual mode 2 /usr/bin/gcc-7 1 manual mode Press <enter> to keep the current choice[*], or type selection number:
選擇您的預設
gcc
版本。2017-08-05 gcc-6 版本
6.3.0
從6.4.0
.
xmrig
按照建構說明進行安裝。apt-get install git build-essential cmake libuv1-dev libmicrohttpd-dev git clone https://github.com/xmrig/xmrig.git cd xmrig mkdir build cd build cmake .. make
建構特定的 gcc 版本
6.3.0
從最近的鏡像下載壓縮包: GCC Releases
wget https://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2 tar xvjf gcc-6.3.0.tar.bz2 cd gcc-6.3.0 apt build-dep gcc ./contrib/download_prerequisites cd .. mkdir objdir cd objdir $PWD/../gcc-6.3.0/configure --prefix=/usr/bin/gcc-6.3 --enable-languages=c,c++,fortran,go --disable-multilib make -j 8 make install
添加
gcc-6.3
到update-alternatives
重要提示:該選項是為目前架構
--disable-multilib
配置和建構所必需的。gcc