Kali Linuxに特定のバージョンのGCCをインストールする方法は?

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-特異的-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/gccgcc-6.3.0実行可能ファイルがある場所で名前を変更してシンボリックリンクを試しました。/usr/bin/gccこれにより、次の問題が発生します。

cc: error trying to exec 'cc1': execvp: No such file or directory, which

この問題は私のパスの他の項目に修正されました。

これにより、次のエラーが発生します。

/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory

6から6.3.0までシンボリックリンクを作成しようとしましたが、十分ではなかったためです/usr/lib/gcc/x86_64-linux-gnu。私は実際にすべてをコピーしようとしましたが、cp -R同じ結果を得ました。

64ビットプログラムでなければなりませんが、私の考えにも /usr/lib/gcc/i686-linux-gnu

私はstraceそれがどこでファイルを開こうとしているのかを見始めることができ、ログファイルを読み、ソースコードを読むことができると確信しており、最終的には正しく構想されていないソリューションを構成する方法を理解できると思います。しかし、誰かが正気でこれを行う方法を教えてくれたらいいでしょう。

答え1

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年8月5日にgcc-6バージョン6.3.06.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

最も近い場所からtarballをダウンロードしてください。: gccバージョン

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

GCC Wiki:GCCのインストール

答え2

  1. まず、次のウェブサイトにアクセスする必要があります。http://gcc.gnu.org/mirrors.html
  2. その後、以前のバージョンを選択すると、別のバージョンが表示されます。
  3. 今、あなたが望むものをクリックするとダウンロードが始まります。

  4. 最後に、ソースからコンパイルしてインストールする必要があります。https://askubuntu.com/questions/25961/how-do-i-install-a-tar-gz-or-tar-bz2-file

答え3

./configure; makeオプションを渡さずに標準を実装すると、必要configuremake installGCCバージョンのさまざまな部分がさまざまなサブディレクトリに配置されます/usr/local

ディレクトリ/usr/localツリーは、パッケージ管理システムの外部(つまり、現在実行されている作業)の外部からシステム管理者がインストールしたソフトウェア用です。したがって、ここにインストールされたソフトウェアは、非常に珍しい状況を除いて、パッケージソフトウェアを損なうことはありません。

特に、GCCは複数のバージョンをインストールするという仮定に基づいて設計されています。何でも壊すには積極的な措置を講じる必要があります(たとえば、ハイブリッドバージョンを作成するために部品を混在させて一致させること)。

答え4

プリコンパイル済み ツールチェーンそれともこれはあなたのためです。 特定アーキテクチャ(x86_64、glibc、gcc 6.3)。

もちろん、次のオプションは、いわゆるrootfs-builder(buildrootやyoctoなど)を使用して
特定のgccバージョンでツールチェーンを作成することです。

関連情報