이 문제는 여러 가지 질문이나 구글을 통해 쉽게 찾을 수 있는 곳에서 제대로 해결된 것 같은데, 아래에 설명된 이유로 만족스러운 해결책을 찾지 못했습니다. 그러나 완전성을 위해 몇 가지 관련 링크를 추가했습니다.
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는 여러 버전을 설치한다는 가정을 바탕으로 설계되었습니다. 무엇이든 깨기 위해서는 적극적인 조치를 취해야 합니다(예를 들어 하이브리드 버전을 만들기 위해 부품을 혼합하고 일치시키는 것).