この問題は、さまざまな質問や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/gcc
gcc-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.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
最も近い場所から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
答え2
- まず、次のウェブサイトにアクセスする必要があります。http://gcc.gnu.org/mirrors.html
- その後、以前のバージョンを選択すると、別のバージョンが表示されます。
今、あなたが望むものをクリックするとダウンロードが始まります。
最後に、ソースからコンパイルしてインストールする必要があります。https://askubuntu.com/questions/25961/how-do-i-install-a-tar-gz-or-tar-bz2-file
答え3
./configure; make
オプションを渡さずに標準を実装すると、必要configure
なmake install
GCCバージョンのさまざまな部分がさまざまなサブディレクトリに配置されます/usr/local
。
ディレクトリ/usr/local
ツリーは、パッケージ管理システムの外部(つまり、現在実行されている作業)の外部からシステム管理者がインストールしたソフトウェア用です。したがって、ここにインストールされたソフトウェアは、非常に珍しい状況を除いて、パッケージソフトウェアを損なうことはありません。
特に、GCCは複数のバージョンをインストールするという仮定に基づいて設計されています。何でも壊すには積極的な措置を講じる必要があります(たとえば、ハイブリッドバージョンを作成するために部品を混在させて一致させること)。