Você pode instalar uma versão próxima do upstream do GCC no Ubuntu Toolchain PPA: link
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.9
Testado no Ubuntu 14.04.
Como instalo a versão mais recente do gcc e g ++?
Estou usando vários recursos C ++ 11 e C ++ 1y; e é por isso que eu preciso disso.
Você pode instalar uma versão próxima do upstream do GCC no Ubuntu Toolchain PPA: link
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.9
Testado no Ubuntu 14.04.
ensinar um homem a pescar etc. etc.
Como criar o pacote de origem e servi-lo a partir de um repositório local de uma maneira apropriada para o apt. Isso funcionará em qualquer distribuição, desde que as dependências possam ser satisfeitas / Este método não requer que você instale o build-deps para cada pacote e polua sua máquina com pacotes estranhos, isso permitirá que você acompanhe os pacotes conforme eles são atualizados no debian experimental . Leva apenas alguns minutos para fazer isso uma vez, e então pode ser reutilizado para reconstruir qualquer pacote que você precise sem depender de outras pessoas para empacotar o ppa para você ou baixar um monte de arquivos diferentes .debs
O benefício de construir vs. extrair o .debs raw do debian é que isto irá construir pacotes contra os pacotes em sua distribuição, que podem diferir na versão / revisão do que é usado como dependências de compilação para a distribuição debian. Este é mais ou menos o processo de backporting de pacotes. Você também pode usar qualquer distribuição do ubuntu para construir pacotes direcionados a qualquer outra distribuição (o destino, neste caso, significa construir contra os pacotes de repositório padrão) sem problemas.
(não para upload de ppa - isso tem requisitos beurocráticos do launchpad
Provavelmente necessário: packaging-dev
(extrai build-essential pubilder ubuntu-dev-tools
entre outros)
Configure o pbuilder (isso permite que você construa um pacote em um chroot sem poluir seu sistema com pacotes de dependência de compilação)
sudo pbuilder create
, pbuilder-dist [precise/oneric/trusy/etc...] create
Obtenha a origem do debian
pull-debian-source gcc-4.9 [4.9.0-6]
é opcional, mas pode ser útil se você quiser extrair revisões estáveis / instáveis / de teste / estáveis sudo apt-get src
Criar pacote
sudo pbuilder build gcc-4.9_4.9.0-6.dsc
.dsc
, para o gcc mais recente é gcc-4.9_4.9.0-6.dsc
, que é um arquivo descritor de pacote. .orig.tar.[gz/xz]
é o tarball de origem. Crie um repositório Apt local
mkdir /convenient/place/for/repo
cp /var/cache/pbuilder/result/* /path/to/repo
apt-ftp archive packages . > Packages
sudo echo "deb [trusted=yes] file:/local/repo/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
Instalar
apt-get update; apt-get install gcc-4.9 g++-4.9
Usando pacotes auto-compilados para satisfazer dependências ao criar pacotes. (Eu configurei com as pastas ~/pbuilder
~/pbuilder/precise_local
(repositório de pacotes locais para precisão) e ~/pbuilder/precise_hooks
(para scripts de hooks))
Adicione o seguinte ao seu ~/.pbuilderrc
OTHERMIRROR="deb [trusted=yes] file:///home/user/pbuilder/precise_local ./"
BINDMOUNTS="/home/user/pbuilder/precise_local"
HOOKDIR="/home/user/pbuilder/precise_hooks"
EXTRAPACKAGES="apt-utils"
em precise_hooks
crie um arquivo D05local
(na forma típica de unix / linux, o prefixo D
informa quando o script está viciado 05
é auto-imposto por ordem de nomes e local
é apenas o nome, se você só tem um gancho não é importante o que é chamado desde que D
seja o prefixo
o script é um verso
(cd /home/user/pbuilder/precise_local ; apt-ftparchive packages . > Packages)
Agora, todos os pacotes colocados em precise_local
satisfarão as dependências de construção. Isso é extremamente útil para construir uma árvore de dependência localmente ao fazer o back-port de pacotes que possuem dependências que também precisam de backporting
Para fazer isso de uma maneira ainda mais limpa, use uma imagem de VM ou um contêiner LXC para prender essa bagunça.
você pode aplicar patches personalizados na maioria dos pacotes debian usando quilt
, patches de quilt podem usar diffs da maioria dos VCSs (veja: usando o quilt )
Há uma etapa adicional, você deve reconstruir .dsc
e .debian.tar.gz
. A maneira mais limpa que eu sei é bzr-builddeb
tem a taxa de sucesso mais alta IMHO (comparado com o git-build-package e outros scripts auxiliares) e é muito mais limpa do que chamar debuild
diretamente ( bzr
= bazar canonical's VCS)
sudo apt-get install bzr-builddeb
.orig.tar.gz
é extraído e .debian.tar.gz
é extraído e coloque nele
bzr init
bzr add
bzr commit
debian/changelog
debian/patches/
e modifique debian/patches/series
(o quilt também tem utilidade para adicionar patches ou para você modificar em tempo real, consulte a documentação) bzr add debian/
bzr commit
bzr builddeb -- -S -us -uc
Isso reconstrói o arquivo de origem e o deixa não assinado (assinatura de gpg necessária para upload de PPA / distro, mas não para repositórios locais privados) cd ../build-area/
Continue na etapa 3 acima. Os passos 1-4 aqui são basicamente o que você precisa fazer o upload para um PPA (eles não pegam arquivos binários), mas você precisa de alguns passos para satisfazer a burocracia do launchpad (este resposta fornece uma explicação, esta tem alguns links)
instale
sudo su -
apt-get install build-essential
add-apt-repository ppa:ubuntu-toolchain-r/test
apt-get update
apt-get install gcc-4.9 g++-4.9 cpp-4.9
depois disso, se você verificar a versão do gcc, você encontrará a versão antiga
gcc --version
para que possamos corrigi-lo com um simples símbolo
cd /usr/bin
rm gcc g++ cpp
ln -s gcc-4.9 gcc
ln -s g++-4.9 g++
ln -s cpp-4.9 cpp
update-alternatives
// Na verdade eu tentei o simbólico & amp; Eu sei que isso vai funcionar, mas você pode usar o simbólico para obtê-lo sem problemas // por favor me corrija se eu estiver errado
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 --slave /usr/bin/gcc gcc /usr/bin/gcc-4.9
update-alternatives --config gcc
update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.9 40 --slave /usr/bin/cpp cpp /usr/bin/cpp-4.9
update-alternatives --config cpp
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
update-alternatives --config g++
/usr/bin/gcc4.9 filename.c
gcc-4.9 é como o gcc-4.8 "ubuntu 14.04 gcc" não é uma grande deferência
O Debian oferece um pacote: link - Para evitar causar problemas com a compatibilidade do Ubuntu / Debian; não adicioná-lo ao seu sources.list.
Em vez disso, basta fazer o download de todos estes:
binutils_2.25-5_amd64.deb
cpp_4.9.2-2_amd64.deb
g++_4.9.2-2_amd64.deb
gcc_4.9.2-2_amd64.deb
gcc-4.9-base_4.9.2-10_amd64.deb
libasan1_4.9.2-10_amd64.deb
libatomic1_4.9.2-10_amd64.deb
libcilkrts5_4.9.2-10_amd64.deb
libgcc1_4.9.2-10_amd64.deb
libgcc-4.9-dev_4.9.2-10_amd64.deb
libgomp1_4.9.2-10_amd64.deb
libitm1_4.9.2-10_amd64.deb
liblsan0_4.9.2-10_amd64.deb
libmpfr4_3.1.2-2_amd64.deb
libquadmath0_4.9.2-10_amd64.deb
libstdc++-4.9-dev_4.9.2-10_amd64.deb
libstdc++6
libtsan0_4.9.2-10_amd64.deb
libubsan0_4.9.2-10_amd64.deb
Dos servidores da Debian, por exemplo:
link
Em seguida, instale-os, por exemplo: $ for package in *.deb; do sudo dpkg --install "$package"; done
[Mais fácil apenas executar esse loop bash algumas vezes até que todas as dependências estejam cobertas do que lembrar a ordem em que você as baixou!]
Atualmente (20141102) adicionando o PPA e invocando o comando acima, apt-get install gcc-4.9 g++-4.9 cpp-4.9
imprimirá uma grande quantidade de pacotes sugeridos. Instale todos eles, exceto o libvtv0-dbg (que possui um conflito de dependência):
apt-get install gcc-4.9 g++-4.9 cpp-4.9 gcc-4.9-locales g++-4.9-multilib libstdc++6-4.9-dbg gcc-4.9-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan1-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libquadmath0-dbg lib32stdc++6-4.9-dbg libx32stdc++6-4.9-dbg
(ignore os pacotes -dbg se eles não forem de seu interesse) e, em seguida, faça um apt-get dist-upgrade --auto-remove
. Essa última etapa basicamente substituirá seu gcc-4.8 pelo gcc-4.9 (mas não irá desinstalar a versão mais antiga), e puxará compiladores fortran atualizados ao mesmo tempo.
Eu tive que forçar a versão para o pacote gcc-4.9-base para passar a mensagem de erro que você postou. Então a instalação funcionou
sudo apt-get install gcc-4.9-base=4.9.2-0ubuntu1~14.04
Agora você pode fazer o regular
sudo apt-get install gcc-4.9
Instale o GNU GNU 4.9
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
Remove a versão anterior do gcc da lista de aplicativos padrão (se já existir)
sudo update-alternatives --remove-all gcc
Tornar o GCC 4.9 o compilador padrão no sistema
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --config gcc
A atualização mais recente GCC 4.9.1 é uma versão de correção de bugs do GCC 4.9, contendo correções importantes para regressões e bugs sérios no GCC 4.9.0, com mais de 88 bugs corrigidos desde o lançamento anterior. Além disso, a versão GCC 4.9.1 suporta o OpenMP 4.0 também em Fortran, em vez de apenas em C e C ++
Nota: Verificado no Ubuntu 14.04 LTS
Tags package-management gcc g++