Pertanyaan ini tampaknya ditangani dengan baik di beberapa pertanyaan dan tempat lain yang mudah ditemukan dengan Google, tetapi saya tidak menemukan solusi yang memuaskan karena alasan yang dijelaskan di bawah ini. Tetapi hanya untuk penyelesaian, saya telah memasukkan beberapa tautan yang relevan:
/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 ...
Dan lain-lain.
Namun, pertanyaan ini adalah tentang menginstal versi GCC yang sangat spesifik di Kali Linux, yang tampaknya tidak tersedia sebagai paket tertentu. Secara khusus, pertanyaannya adalah tentang cara menginstal versi 6.3.0, karena saya memerlukan versi ini untuk mengkompilasi program tertentu: https://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/
(sebagai pertanyaan bonus, jika ada cara yang lebih waras untuk memperbaiki masalah khusus ini tanpa menggunakan versi GCC yang berbeda, jangan ragu untuk menjawab, tapi saya yakin pertanyaan ini bersifat umum dan saya ingin tahu bagaimana melakukannya terlepas dari cara membuat tautan program yang disebutkan di atas dengan benar)
Versi yang tersedia untuk menginstal paket apa pun, misalnya gcc, dapat ditentukan dengan:
apt-cache showpkg gcc
Yang akan mencantumkan versi yang tersedia di bawah "versi:", mis
4:7.2.0-1d1
4:4.9.2-2
Instalasi kemudian sesederhana mengeluarkan
apt-get install gcc:4:4.9.2-2
Ini akan menginstal versi yang lebih lama 4: 4.9.2-2, hanya dengan (saya percaya) menimpa instalasi 7.2.0-1d1, jika ada.
Untuk mendapatkan versi 4: 4.9.2-2 tersedia sama sekali, saya harus menambahkan deb
http://old.kali.org/kali sana main non-free contrib
ke /etc/apt/sources.list
file saya
dan kemudian jalankan apt-get update
.
Namun, bagaimana jika versi yang saya butuhkan tidak tercantum?
Saya telah bereksperimen dengan berbagai sumber, misalnya yang ditemukan di sini: http://snapshot.debian.org/ dan di berbagai pertanyaan dan situs web lain dari pencarian Google.
Sebagian besar dari mereka memberi saya abaikan atau kesalahan, misalnya sebagai berikut
Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease
Bahkan jika ini akan berhasil, tampaknya pendekatan yang sangat buruk untuk menginstal versi tertentu, karena menambahkan beberapa sumber sewenang-wenang mungkin tidak memiliki versi tertentu yang saya inginkan.
Jika saya mencari di snapshot.debian.org untuk gcc, saya hanya mendapatkan versi yang sangat lama: http://snapshot.debian.org/package/gcc/
Saya akhirnya menjadi frustrasi dengan pendekatan ini dan mengkompilasi GCC 6.3.0 dari tarball sumber. Kompilasi berhasil, tetapi kemudian saya dihadapkan dengan cara menginstalnya. Saya berhati-hati menjalankan make install
karena saya khawatir itu akan merusak apt
dan dpkg
dan mungkin merusak sistem.
Sebagai gantinya, saya mencoba menjalankannya dari direktori build, secara langsung. Saya mencoba untuk menambahkan direktori build sebagai entri pertama di PATH saya, yang tidak berfungsi. Kemudian, saya mencoba untuk mengubah nama /usr/bin/gcc
dan melakukan symlink dari /usr/bin/gcc
tempat gcc-6.3.0 saya dapat dieksekusi Ini menyajikan masalah berikut:
cc: error trying to exec 'cc1': execvp: No such file or directory, which
Ini diperbaiki dengan entri lain di PATH saya.
Lalu, saya mendapatkan kesalahan ini:
/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory
Yang saya asumsikan adalah karena entri yang hilang di /usr/lib/gcc/x86_64-linux-gnu
. Saya mencoba membuat symlink dari 6 ke 6.3.0, tetapi ini tidak cukup. Saya juga mencoba untuk benar-benar menyalin semuanya dengan cp -R
hasil yang sama.
Ini harus menjadi program 64-bit, tapi saya juga menganggapnya sama
/usr/lib/gcc/i686-linux-gnu
.
Saya yakin saya bisa mulai melakukan strace
untuk melihat di mana ia mencoba untuk membuka file dari, membaca file log, membaca sumbernya, dan akhirnya saya membayangkan saya bisa mencari cara untuk meretas bersama solusi yang dikandung dengan buruk. Tapi alangkah baiknya jika seseorang bisa memberi tahu saya bagaimana melakukan ini dengan cara yang waras.
sumber
Jawaban:
GCC 6 tersedia di kali linux dapat diinstal sebagai berikut:
Untuk beralih antara gcc6 dan gcc7
output sampel:
Pilih
gcc
versi default Anda .pada 2017-08-05 versi gcc-6 ditingkatkan dari
6.3.0
menjadi6.4.0
.Membangun versi gcc tertentu
6.3.0
Unduh tarball dari cermin terdekat : Rilis GCC
Tambahkan
gcc-6.3
keupdate-alternatives
Penting :
--disable-multilib
Opsi diperlukan untuk mengonfigurasi dan membangungcc
untuk arsitektur saat ini.GCC WIKI: Memasang GCC
sumber
6.3.0
, sekarang versi gcc6 ditingkatkan ke6.4.0
.Sekarang Anda harus mengklik salah satu yang ingin Anda miliki dan unduhan akan dimulai.
Akhirnya, Anda harus mengkompilasi dan menginstal dari sumber: /ubuntu/25961/how-do-i-install-a-tar-gz-or-tar-bz2-file
sumber
make install
mungkin merusakdpkg
atauapt
.. dapatkah Anda menguraikan! @AlphaCentauriJika Anda melakukan standar
./configure; make
tanpa melewati opsi apa punconfigure
, makamake install
akan menempatkan potongan versi GCC yang Anda inginkan di berbagai subdirektori dari/usr/local
.The
/usr/local
pohon direktori ditujukan untuk perangkat lunak yang diinstal oleh luar sistem administrator sistem paket-manajemen (yaitu. Apa yang Anda lakukan). Dengan demikian, perangkat lunak yang diinstal tidak akan merusak perangkat lunak yang dikemas kecuali dalam keadaan yang sangat tidak biasa.GCC khususnya dirancang dengan asumsi bahwa Anda akan menginstal banyak versi. Cukup banyak membutuhkan tindakan aktif pada bagian Anda untuk memecahkan apa pun (misalnya dengan mencampur dan mencocokkan potongan untuk mencoba membuat versi hybrid).
sumber
configure
skripnya (mis. Beberapa-program-suffix=
dll)Pertama, saya akan merekomendasikan, jika Anda mengkompilasi GCC dari sumbernya, untuk memilih versi yang lebih baru (misalnya GCC 7 di akhir 2017).
Kemudian, pastikan untuk membangun GCC di luar pohon sumbernya dan untuk mencoba
configure
skripnya terlebih dahulu dengan--help
dan untuk memberikan lebih banyak opsi keconfigure
. Baca hati-hati dalam instalasi GCC petunjuk dan memahami peran autoconf .Dalam praktiknya, saya sarankan
jalankan
/usr/bin/gcc -v
untuk memahami bagaimana GCC sistem Anda telah dikonfigurasijalankan
apt-get build-dep gcc-6
(atau serupa) untuk mendapatkan dependensi GCC sistem terbarubuat direktori bangunan di luar pohon sumber GCC Anda, dan jalankan lebih jauh
.../configure
(ganti...
dengan jalur relatif yang sesuai, misalnya../gcc-7.2/
) dan dimake
sana.Anda mungkin ingin memberikan setidaknya
--program-suffix=-mine
ituconfigure
(-mine
dapat diganti dengan akhiran lain) dan Anda bahkan dapat menambahkan--prefix=$HOME/soft/
jika Anda tidak memiliki akses root. Anda mungkin ingin opsi tambahan untukconfigure
dan Anda harus memilih dan memberi mereka dengan hati-hati.kemudian nanti
make install
(Anda bahkan dapat menjalankan tanpa menjadi rootmake install DESTDIR=/tmp/gccinst/
dan kemudian menyalin dengan hati-hati dan secara rekursif sebagai root yang/tmp/gccinst/
....) akan menginstal hal-hal di/usr/local/bin/gcc-mine
dll .... (atau$HOME/soft/bin/gcc-mine
....) sehingga tidak akan merusak sistem file yang diinstal sistem .Perhatikan bahwa FHS mengharuskan sistem manajemen paket untuk pergi sendiri
/usr/local/
(yang merupakan standar--prefix
untuk GCCconfigure
)sumber
Anda juga dapat menggunakan toolchain yang telah dikompilasi atau yang ini untuk arsitektur spesifik Anda (x86_64, glibc, gcc 6.3).
Tentu saja opsi selanjutnya adalah menggunakan rootfs-builder seperti buildroot atau yocto
untuk menghasilkan toolchain dengan versi gcc specfic Anda.
sumber