Vraag Krijgt u + installatie van gcc / g ++ 4.9 op Ubuntu? [duplicaat]


Deze vraag heeft hier al een antwoord:

Hoe installeer ik de nieuwste versie van gcc en g ++?

Ik gebruik verschillende C ++ 11- en C ++ 1y-functies; daarom heb ik dit nodig.


78
2018-03-02 03:05


oorsprong


@muru Behalve dat mijn vraag maanden eerder was. Dus hij is een duplicaat van mij. - A T
Dupliceren onafhankelijk van de tijd? - Dat is een raar beleid. - En een beetje een verkeerde benaming? - A T
Ook zou ik willen beweren dat de antwoorden op mijn vraag van hogere kwaliteit en meer heterogeniteit zijn dan de zijne. Het aantal stemmen is ook vergelijkbaar. Dus pleit ik ervoor dat hij in de mijne wordt samengevoegd, in plaats van het omgekeerde. - A T


antwoorden:


U kunt dicht bij de upstream-versie van GCC installeren vanaf Ubuntu Toolchain PPA: https://wiki.ubuntu.com/ToolChain#PPA_packages

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.9

Getest op Ubuntu 14.04.


107
2018-04-28 08:14



Ik heb Ubuntu 14.04 en dat werkte niet voor mij. Ben je weggegaan? Ik zie g ++ - 4.9 niet launchpad.net/~ubuntu-toolchain-r/+archive/test - test
test, zou moeten werken: gist.github.com/rutsky/bc40c6b4bee0ab5f9ee4 - Vladimir Rutsky
Maar het werkt niet voor mij op 12.04: E: Kon pakket gcc-4.9 E niet vinden: kon pakket niet vinden door regex 'gcc-4.9' looks zoals 12.04 werd specifiek niet ondersteund door deze repository, hoewel zowel nieuwere als oudere versies van Ubuntu worden ondersteund. - Nickolai Leschov
Als laatste stap vond ik het nodig om de symbolische link te veranderen /usr/bin/g++ van een doelwit van /usr/bin/g++-4.8 naar een doelwit van /usr/bin/g++-4.9. ... of laat het ongewijzigd maar aanroep g++-4.9 direct. Eindelijk: std: regex-ondersteuning. - DavidO
@DavidO - Je zou in staat moeten zijn om het alternatieven systeem te gebruiken om directe links niet rechtstreeks te bewerken. Zien askubuntu.com/q/26498/5682. - Josh Kelley


Intro

een man leren vissen etc. etc.

Hoe het bronpakket te bouwen en vanuit een lokale repository te dienen op een apt-vriendelijke manier. Dit zal werken op elke distributie op voorwaarde dat afhankelijkheden kunnen worden voldaan. Deze methode vereist niet dat je build-deps voor elk pakket installeert en je machine vervuilt met externe pakketten, dit zal je toestaan ​​om de pakketten bij te houden als ze worden bijgewerkt in debian experimenteel . Het kost slechts een paar minuten om dit een keer te doen en kan dan opnieuw worden gebruikt om elk pakket opnieuw te bouwen zonder afhankelijk te zijn van andere mensen om ppa voor je te verpakken of een heleboel verschillende .vbs te downloaden.

Het voordeel van het bouwen versus trekken van raw .debs van debian is dat dit pakketten zal bouwen tegen de pakketten in uw distributie die kunnen verschillen in versie / revisie van wat wordt gebruikt als build-afhankelijkheden voor de debian-distributie. Dit is min of meer het proces voor het back-uppen van pakketten. Je kunt ook elke ubuntu-distributie gebruiken om pakketten te maken die gericht zijn op elke andere distributie (doel in dit geval betekent bouwen tegen de standaard repository-pakketten) zonder gedoe.

Basic-How-to-Build-a-deb

(niet voor het uploaden van ppa's - dit heeft eeüocratische vereisten van het startvenster

Waarschijnlijk-vereiste: packaging-dev (pulls build-essential pubilder ubuntu-dev-tools onder andere)

  1. Stel pbuilder in (hiermee kunt u een pakket in een chroot bouwen zonder uw systeem te vervuilen met build-afhankelijkheidspakketten)

    • sudo pbuilder create,
    • als je wilt bouwen voor een specifieke distributie, (pbuilder gebruikt de versie van het buildsysteem in een chroot) die je kunt gebruiken pbuilder-dist [precise/oneric/trusy/etc...] create
  2. Krijg debian-bron

    • pull-debian-source gcc-4.9 [4.9.0-6]  specifieke debianrevisie is optioneel, maar kan nuttig zijn als u experimentele / instabiele / test / stabiele revisies wilt uitvoeren
    • je kan ook trek van specifieke ubuntu distro's door ze toe te voegen aan sources.list als een deb-src en te gebruiken sudo apt-get src 
  3. Bouwpakket

    • sudo pbuilder build gcc-4.9_4.9.0-6.dsc 
    • In de gedownloade bestanden is er een .dsc bestand, voor de meest recente gcc is dat gcc-4.9_4.9.0-6.dsc dat is een pakketdescriptorbestand. .orig.tar.[gz/xz] is de broncode.
  4. Maak een lokale Apt-repository aan

    • mkdir /convenient/place/for/repo
    • cp /var/cache/pbuilder/result/* /path/to/repo
    • (ervan uitgaande dat je in reprise bent) apt-ftp archive packages . > Packages
    • (een van de vele manieren om dit te doen) sudo echo "deb [trusted=yes] file:/local/repo/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
    • Merk op dat je deze stap ook kunt doen met .debs die je overal hebt gedownload (stap 1-3 overslaan)
  5. Installeren

    • apt-get update; apt-get install gcc-4.9 g++-4.9

Extra trucs

Gemakkelijke backporting afhankelijkheden

Het gebruik van zelf-gecompileerde pakketten om afhankelijkheden te bevredigen bij het bouwen van pakketten. (Ik heb het ingesteld met mappen ~/pbuilder  ~/pbuilder/precise_local(lokale pakketrepo voor nauwkeurig) en ~/pbuilder/precise_hooks (voor haakscripts))

Voeg het volgende toe aan uw ~/.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"

in precise_hooks maak een bestand aan D05local (in typische unix / linux-mode, voorvoegsel D vertelt wanneer het script verslaafd is 05 is zelfopgelegde naambestelling en local is gewoon de naam, als je maar één haak hebt, is het niet belangrijk hoe het zo lang wordt genoemd D is het voorvoegsel

het script is een one-liner

(cd /home/user/pbuilder/precise_local ; apt-ftparchive packages . > Packages)

Nu alle pakketten geplaatst precise_local zal bouwen afhankelijk maken. Dit is uiterst nuttig om lokaal een afhankelijkheidsboom te bouwen bij het backporten van pakketten die afhankelijkheden hebben die ook backporting nodig hebben

De VM-oplossing

Om dit op een nog schonere manier te doen, gebruikt u een VM-image of LXC-container om deze puinhoop te blokkeren.

Aangepaste patches toepassen

u kunt aangepaste patches toepassen in de meeste debian-pakketten met quilt, quiltpatches kunnen diffs gebruiken van de meeste VCS's (zie: met behulp van quilt )

Er is een extra stap, je moet het opnieuw opbouwen .dsc en .debian.tar.gz. Schoonste manier die ik weet is bzr-builddeb het heeft het hoogste slagingspercentage IMHO (vergeleken met git-build-package en andere helper scripts) en is veel schoner dan bellen debuild direct (bzr= VCS van bazaar canonical)

  1. sudo apt-get install bzr-builddeb 
  2. (ervan uitgaand .orig.tar.gz is geëxtraheerd en .debian.tar.gz wordt geëxtraheerd en daarin geplaatst
    • bzr init
    • bzr add
    • bzr commit
  3. (OPTIONEEL)
    • wijzigen debian/changelog
    • voeg patch toe aan debian/patches/ en wijzigen debian/patches/series (quilt heeft ook een functie om patches toe te voegen of om je on-the-fly te wijzigen, zie de documentatie)
    • bzr add debian/
    • bzr commit
  4. bzr builddeb -- -S -us -uc Dit herbouwt het bronbestand en laat het niet ondertekenen (ondertekening van gpg vereist voor PPA / distro uploading, maar niet voor lokale privé repos)
  5. cd ../build-area/ Ga verder vanaf stap 3 hierboven.

De stappen 1-4 zijn ongeveer wat je moet uploaden naar een PPA (ze nemen geen binaire bestanden), maar je hebt enkele stappen nodig om de bureaucratie van het startpunt te bevredigen (deze antwoord geeft een verklaring, deze een heeft enkele links)


42
2018-06-12 16:03



Echt cool :-) - Marcos Roriz Junior
sommige stappen ontbreken voor 14.04. sudo pbuilder build gcc-4.9_4.9.0-6.dsc mislukt. - jfs


installeren

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

daarna zul je, als je de versie van gcc checkt, de oude versie vinden

gcc --version

dus we kunnen het oplossen met simpel symbolisch

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

of

 je kunt updaten met update-alternatives

// Eigenlijk heb ik de symboliek geprobeerd en ik weet dat dit werkt, maar je kunt het symbool gebruiken om het zonder problemen te krijgen // corigeer me alsjeblieft als ik het fout heb

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

of

 je kunt gewoon compileren met

/usr/bin/gcc4.9 filename.c

gcc-4.9 is net als de gcc-4.8 "ubuntu 14.04 gcc" het is geen grote eerbied

proof


26
2017-08-05 08:27



gcc 4.9 heeft een groot verschil met 4.8, en het ondersteunt op opmp 4.0 ondersteuning.
kun je me het verschil geven alstublieft! - hwez
Het heeft ondersteuning voor c ++ 1y (C ++ 14), om te beginnen. - Drew Noakes
Artikel op gcc 4.9 functies: isocpp.org/blog/2014/04/gcc-4.9.0 - Kurt Krueckeberg


Debian biedt een pakket: https://packages.debian.org/jessie/gcc-4.9 - Om problemen met Ubuntu / Debian compatibiliteit te voorkomen; voeg het niet toe aan je sources.list.

Download in plaats daarvan eenvoudig al deze:

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

Van Debians servers, bijvoorbeeld:

http://ftp.us.debian.org/debian/pool/main/b/binutils/binutils_2.25-5_amd64.deb

Installeer ze vervolgens, bijvoorbeeld: $ for package in *.deb; do sudo dpkg --install "$package"; done

[Gemakkelijker om die bash-lus een paar keer uit te voeren totdat alle afhankelijkheden zijn bedekt dan wanneer je de volgorde herinnert waarin je ze hebt gedownload!]


8
2018-03-02 03:05



Beide links zijn dood ... - Raghav RV
Nou, het maakt niet meer uit, nieuwe Ubuntus hebben nieuwere gcc-versies dan 4.9 - A T
De vraag was om g ++ 4.9 op Ubuntu te installeren ... Niet essentieel op een van de "nieuwe Ubuntu's" ...;) - Raghav RV
Oké @RaghavRV Ik heb alle dep-namen en URL's bijgewerkt - A T


Momenteel (20141102) voegt de PPA toe en roept het bovenstaande commando op apt-get install gcc-4.9 g++-4.9 cpp-4.9zal een hele reeks voorgestelde pakketten afdrukken. Installeer ze allemaal behalve voor libvtv0-dbg (met een afhankelijkheidsconflict):

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

(sla de -dbg-pakketten over als ze niet van belang voor u zijn), en doe dan een apt-get dist-upgrade --auto-remove. Die laatste stap zal in principe je gcc-4.8 vervangen door gcc-4.9 (maar de oudere versie niet de-installeren), en tegelijkertijd up-to-date fortran-compilers gebruiken.


2
2017-11-02 19:09





Ik moest de versie van het gcc-4.9-basispakket forceren om voorbij de foutmelding te komen die je hebt gepost. Vervolgens werkte de installatie

sudo apt-get install gcc-4.9-base=4.9.2-0ubuntu1~14.04

Nu kun je de reguliere doen

sudo apt-get install gcc-4.9

2
2018-04-13 16:51



In mijn geval moest ik een specifieke versie van libstdc++6, wat een afhankelijkheid is. Om de een of andere reden wilde het een oudere versie gebruiken waarvan hij dacht dat het een nieuwere versie was, dus het zou niet upgraden zonder forceren. - Emre


Installeer GCC GNU 4.9

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

sudo apt-get update

sudo apt-get install gcc-4.9

Verwijder de vorige gcc-versie uit de standaardlijst met applicaties (indien deze al bestaat)

sudo update-alternatives --remove-all gcc

Maak GCC 4.9 de standaardcompiler op het systeem

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20

sudo update-alternatives --config gcc

De nieuwste update GCC 4.9.1 is een bugfix-release van de GCC 4.9-tak met belangrijke fixes voor regressies en serieuze bugs in GCC 4.9.0 met meer dan 88 bugs verholpen sinds de vorige release. Bovendien ondersteunt de release van GCC 4.9.1 OpenMP 4.0 ook in Fortran, in plaats van alleen in C en C ++

Opmerking: Gecontroleerd op ubuntu 14.04 LTS


2
2017-08-25 05:56