117 votes

Erreur de compilation : "g++ : erreur en essayant d'exécuter 'cc1plus' : execvp : No such file or directory"

Lorsque je compile un programme C/C++ avec popen en php ... J'ai eu cette erreur :

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

mais si je lance le code php dans le shell cela fonctionne 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

2 votes

Avez-vous essayé d'imprimer les variables d'environnement et de les comparer ? Le mode sans échec est-il activé ou désactivé ?

0 votes

Oui... j'ai comparé les variables d'environnement entre php et le shell ... mais cela ne m'a pas aidé... et mon mode sans échec est Off...

0 votes

Utilisez-vous le même utilisateur ou exécutez-vous script depuis le serveur web ? Ajoutez "-v" (devrait être une sortie verbeuse), peut-être y aura-t-il une réponse.

2voto

vliu Points 21

J'ai eu le même problème en bifurquant avec 'python' ; la raison principale est que le chemin de recherche est relatif, si on n'appelle pas g++ como /usr/bin/g++ il ne sera pas en mesure de déterminer les chemins canoniques pour appeler cc1plus .

2voto

David Hamner Points 521

Installer g++ sur openSuSE, exécutez

zypper in gcc-c++

1voto

lilith Points 26

Quelque chose a mal tourné avec votre CCG installation. Essayez de le réinstaller comme ceci :

sudo apt-get install --reinstall g++-5

Dans Ubuntu, le g++ est un paquet de dépendances qui installe la version par défaut de g++ pour la version de votre système d'exploitation. Il ne suffit donc pas de supprimer et de réinstaller le paquet, car la version par défaut sera installée. C'est pourquoi vous devez réinstaller.

Remarque : Vous pouvez remplacer le g++-5 avec votre g++ version. Pour trouver votre g++ version exécute ceci :

g++ --version

1voto

Slava Points 4119

Vous pouvez également avoir ce problème si la variable d'environnement GCC_ROOT pointe vers un mauvais emplacement. La solution la plus simple est probablement (sur un système de type *nix) :

unset GCC_ROOT

dans les cas plus compliqués, vous devrez peut-être le replacer au bon endroit

0voto

rtrigoso Points 489

J'ai eu le même problème avec gcc "gnat1" et c'était dû au fait que le chemin était incorrect. Gnat1 était en version 4.6 mais j'exécutais la version 4.8.1, que j'avais installée. Comme solution temporaire, j'ai copié gnat1 de 4.6 et collé sous le dossier 4.8.1.

Le chemin vers gcc sur mon ordinateur est /usr/lib/gcc/i686-linux-gnu/.

Vous pouvez trouver le chemin d'accès en utilisant la commande find :

find /usr -name "gnat1"

Dans votre cas, vous devriez chercher 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 chemin brisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X