AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 410723
Accepted
AlphaCentauri
AlphaCentauri
Asked: 2017-12-14 11:34:05 +0800 CST2017-12-14 11:34:05 +0800 CST 2017-12-14 11:34:05 +0800 CST

Como instalar uma versão específica do GCC no Kali Linux?

  • 772

Esta questão parece ser abordada adequadamente em várias perguntas e outros locais facilmente encontrados no Google, mas não considero a solução satisfatória pelos motivos explicados abaixo. Mas apenas para completar, incluí alguns links relevantes:

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 ...

E outros.

No entanto, esta questão é sobre a instalação de uma versão muito específica do GCC no Kali Linux, que não aparece prontamente disponível como um pacote específico. Em particular, a questão é sobre como instalar a versão 6.3.0, pois preciso dessa versão para compilar um determinado programa: https://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/

(como uma pergunta bônus, se houver uma maneira mais sensata de corrigir esse problema específico sem usar uma versão diferente do GCC, fique à vontade para responder, mas acredito que essa pergunta seja geral e gostaria de saber como fazer isso independentemente como fazer o link do programa mencionado corretamente)

As versões disponíveis para instalação de qualquer pacote, por exemplo, gcc, podem ser determinadas com:

apt-cache showpkg gcc

Que listará as versões disponíveis em "versões:", por exemplo

4:7.2.0-1d1
4:4.9.2-2

A instalação é tão simples quanto emitir

apt-get install gcc:4:4.9.2-2

Isso instalará a versão mais antiga 4:4.9.2-2, simplesmente (acredito) sobrescrevendo a instalação 7.2.0-1d1, se presente.

Para obter a versão 4:4.9.2-2 disponível, tive que adicionar deb http://old.kali.org/kali sana main non-free contribao meu /etc/apt/sources.listarquivo e executar apt-get update.

No entanto, e se a versão de que preciso não estiver listada?

Tenho experimentado várias fontes, por exemplo, as encontradas aqui: http://snapshot.debian.org/ e em várias outras perguntas e sites de pesquisas do Google.

A maioria deles me ignora ou erros, por exemplo, da seguinte forma

Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease

Mesmo que isso funcione, parece ser uma abordagem muito ruim para instalar uma versão específica, pois adicionar alguma fonte arbitrária pode não ter a versão específica que eu desejo.

Se eu pesquisar em snapshot.debian.org por gcc, obtenho apenas versões muito antigas: http://snapshot.debian.org/package/gcc/

Acabei ficando frustrado com essa abordagem e compilei o GCC 6.3.0 a partir do tarball de origem. A compilação foi bem-sucedida, mas depois me deparei com como instalá-la. Sou cauteloso ao executar make install, pois temo que isso adultere apte dpkgpossivelmente quebre o sistema.

Em vez disso, tentei executá-lo diretamente do diretório de compilação. Tentei simplesmente adicionar o diretório de compilação como a primeira entrada em meu PATH, o que não funcionou. Em seguida, tentei renomear /usr/bin/gcce fazer um link simbólico de /usr/bin/gcconde meu executável gcc-6.3.0 está. Isso apresenta o seguinte problema:

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

Isso foi corrigido com outra entrada no meu PATH.

Então, recebo este erro:

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

O que eu suponho é por causa de uma entrada ausente em /usr/lib/gcc/x86_64-linux-gnu. Tentei fazer um link simbólico de 6 para 6.3.0, mas não foi suficiente. Eu também tentei copiar tudo com o cp -Rmesmo resultado.

Este deve ser um programa de 64 bits, mas também considerei o mesmo para /usr/lib/gcc/i686-linux-gnu.

Tenho certeza de que poderia começar stracea ver de onde ele tenta abrir os arquivos, ler arquivos de log, ler a fonte e, eventualmente, imagino que seria capaz de descobrir como hackear uma solução mal concebida. Mas seria bom se alguém pudesse me dizer como fazer isso de maneira sã.

kali-linux package-management
  • 5 5 respostas
  • 47158 Views

5 respostas

  • Voted
  1. Best Answer
    GAD3R
    2017-12-15T05:11:07+08:002017-12-15T05:11:07+08:00

    Como instalar uma versão específica do GCC no Kali Linux?

    O GCC 6 está disponível no kali linux e pode ser instalado da seguinte maneira:

    apt install g++-6 gcc-6
    

    Para alternar entre gcc6 e 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
    

    Exemplo de saída:

    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:
    

    Selecione sua versão padrão gcc.

    em 05/08/2017, a versão gcc-6 foi atualizada de 6.3.0para 6.4.0.

    Instalando xmrigseguindo as instruções do build .

    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
    

    Construindo uma versão específica do gcc6.3.0

    Baixe o tarball do espelho mais próximo : 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
    

    Adicionar gcc-6.3aupdate-alternatives

    Importante : A --disable-multilibopção é necessária para configurar e construir gccpara a arquitetura atual.

    GCC WIKI: Instalando o GCC

    • 11
  2. Prashant Luhar
    2017-12-14T17:24:28+08:002017-12-14T17:24:28+08:00
    1. Primeiro você tem que ir a este site: http://gcc.gnu.org/mirrors.html
    2. Em seguida, selecione versões antigas e você verá versões diferentes.
    3. Agora você deve clicar naquele que deseja ter e o download será iniciado.

    4. Finalmente, você deve compilar e instalar a partir da fonte: https://askubuntu.com/questions/25961/how-do-i-install-a-tar-gz-or-tar-bz2-file

    • 1
  3. Mark
    2017-12-15T15:00:09+08:002017-12-15T15:00:09+08:00

    Se você fez um padrão ./configure; makesem passar nenhuma opção para configure, então make installcolocará as peças de sua versão desejada do GCC em vários subdiretórios de /usr/local.

    A /usr/localárvore de diretórios destina-se ao software instalado pelo administrador do sistema fora do sistema de gerenciamento de pacotes (ou seja, exatamente o que você está fazendo). Como tal, o software instalado lá não quebrará o software empacotado, exceto em circunstâncias extremamente incomuns.

    O GCC, em particular, foi projetado com base na suposição de que você terá várias versões instaladas. Requer medidas ativas de sua parte para quebrar qualquer coisa (por exemplo, misturando e combinando peças para tentar criar uma versão híbrida).

    • 0
  4. Basile Starynkevitch
    2017-12-16T01:36:38+08:002017-12-16T01:36:38+08:00

    Acabei ficando frustrado com essa abordagem e compilei o GCC 6.3.0 a partir do tarball de origem. A compilação foi bem sucedida,

    Primeiro, eu recomendaria, se você compilar o GCC de sua fonte, escolher uma versão mais recente (por exemplo , GCC 7 no final de 2017).

    Em seguida, certifique-se de construir o GCC fora de sua árvore de origem e tente primeiro seu configurescript com --helpe passar mais opções para seu arquivoconfigure . Leia atentamente as instruções de instalação do GCC e entenda o papel do autoconf .

    Na prática, eu recomendo

    • execute /usr/bin/gcc -vpara entender como o GCC do seu sistema foi configurado

    • run apt-get build-dep gcc-6(ou similar) para obter as dependências GCC do sistema recente

    • crie um diretório de compilação fora de sua árvore de origem GCC e execute mais .../configure(substitua ...pelo caminho relativo apropriado, por exemplo ../gcc-7.2/) e makelá.

    • você provavelmente deseja passar pelo menos --program-suffix=-minepara isso configure(o -minepode ser substituído por outro sufixo) e pode até adicionar --prefix=$HOME/soft/se não tiver acesso root. Você provavelmente desejará opções adicionais e configureprecisará escolhê-las e fornecê-las com cuidado.

    • em seguida, um posterior make install(você pode até executar sem ser root make install DESTDIR=/tmp/gccinst/e depois copiar com cuidado e recursivamente como root que /tmp/gccinst/....) instalaria coisas em /usr/local/bin/gcc-mineetc .... (ou $HOME/soft/bin/gcc-mine....) para não quebrar nenhum arquivo instalado no sistema .

    Observe que o FHS requer que o sistema de gerenciamento de pacotes saia sozinho /usr/local/(que é o padrão --prefixpara GCC's configure)

    • 0
  5. Christian Stenzel
    2019-01-15T12:20:19+08:002019-01-15T12:20:19+08:00

    Você também pode usar uma cadeia de ferramentas pré-compilada ou esta para sua arquitetura específica (x86_64, glibc, gcc 6.3).

    É claro que a próxima opção é usar o chamado rootfs-builder como buildroot ou yocto
    para gerar uma cadeia de ferramentas com sua versão específica do gcc.

    • 0

relate perguntas

  • Entendendo a saída da lista apt

  • Usando GPU dedicado no rolamento kali

  • Instale o pacote ncdf4 R com shell script

  • Instale o grub na partição do Windows 7 no Kali Linux

  • python2 e OpenSSL não funcionam juntos no Kali - como consertar?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve