web-dev-qa-db-fra.com

Erreur de compilation: "g ++: erreur lors de la tentative d'exécution de 'cc1plus': execvp: aucun fichier ou répertoire de ce type"

Lorsque je compile un programme C/C++ avec popen dans php... j'ai cette erreur:

g++: error trying to exec 'cc1plus': execvp: No such file or directory

mais si je lance le code php dans Shell .. cela fonctionne très bien ..

dans Arch Linux ..

Code PHP:

<?php
    function rfile($fp) {
    $out="";
       while (!feof($fp)) {
           $out.= fgets($fp, 1024000);
       }
       return $out;
    }
    $p = popen('g++ -Wall -g aplusb.cc -o aplusb 2>&1', 'r');
    $result = rfile($p);
    pclose($p);
    echo $result;
?>

merci

77
Zeyi Fan

Vous devez installer gcc-c++ paquet.

yum install gcc-c++
101
hahakubile

Je ne sais pas pourquoi mais je viens de renommer mon fichier source COLARR.C en colarr.c et l'erreur a disparu! vous avez probablement besoin de ça

Sudo apt-get install g++
37
Sunil Kumar

Ce problème peut survenir si différentes versions de g ++ et gcc sont installées.

   g++ --version
   gcc --version

Si cela ne donne pas le résultat, vous avez probablement plusieurs versions de gcc installées. Vous pouvez vérifier en utilisant:

    dpkg -l | grep gcc | awk '{print $2}'

Habituellement,/usr/bin/gcc sera lié de manière symétrique à/etc/alternatives/gcc qui est à nouveau lié de manière symétrique, par exemple, à dire /usr/bin/gcc-4.6 ou /usr/bin/gcc-4.8 gcc-4.6, gcc-4.8 installé.)

En modifiant ce lien, vous pouvez faire en sorte que gcc et g ++ soient exécutés dans la même version, ce qui peut résoudre votre problème!

16
pulkitag

Chaque compilateur a son propre répertoire libexec /. Le répertoire libexec contient normalement de petits programmes d'assistance appelés par d'autres programmes. Dans ce cas, gcc recherche son propre compilateur 'cc1'. Votre machine peut contenir différentes versions de gcc et chaque version doit avoir son propre "cc1". Normalement, ces compilateurs sont situés sur:


/usr/local/libexec/gcc/<architecture>/<compiler>/<compiler_version>/cc1

Chemin similaire pour g ++. L'erreur ci-dessus signifie que la version actuelle de gcc utilisée ne peut pas trouver son propre compilateur "cc1". Cela pointe normalement vers un problème PATH.

7
Freddy

J'ai eu le même problème lorsque j'ai bricolé avec 'python'; la raison principale est que le chemin de recherche est relatif, si vous n'appelez pas g++ comme /usr/bin/g++, il ne sera pas en mesure d’établir les chemins canoniques pour appeler cc1plus.

2
vliu

J'ai eu le même problème avec gcc "gnat1" et c'était à cause du mauvais chemin. Gnat1 était sur la version 4.6 mais j'exécutais la version 4.8.1 que j'avais installée. Comme solution temporaire, j'ai copié gnat1 à partir de la version 4.6 et collé sous le dossier 4.8.1.

Le chemin d'accès à gcc sur mon ordinateur est/usr/lib/gcc/i686-linux-gnu /

Vous pouvez trouver le chemin en utilisant la commande find:

find /usr -name "gnat1"

Dans votre cas, vous chercheriez cc1plus:

find /usr -name "cc1plus"

Bien sûr, il s’agit d’une solution rapide et une réponse plus solide consisterait à réparer le tracé brisé.

0
rtrigoso

Installez g ++ à l'exécution d'OpenSuSE

zypper in gcc-c++
0
David Hamner