Ошибка компиляции: "g ++: ошибка при попытке выполнить exc 'cc1plus': execvp: такого файла или каталога нет" - PullRequest
75 голосов
/ 16 января 2012

Когда я компилирую программу C / C ++ с popen в php ... Я получил эту ошибку:

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

но если я запускаю php-код в оболочке .. он работает нормально ..

в Arch Linux ..

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;
?>

спасибо

Ответы [ 7 ]

97 голосов
/ 16 января 2014

Вам необходимо установить gcc-c++ пакет.

yum install gcc-c++
37 голосов
/ 27 февраля 2014

Не знаю почему, но я просто переименовал исходный файл COLARR.C в colarr.c, и ошибка исчезла! наверное тебе это нужно

sudo apt-get install g++
16 голосов
/ 13 апреля 2014

Эта проблема может возникнуть, если установлены разные версии g ++ и gcc.

   g++ --version
   gcc --version

Если они не дают результата, возможно, у вас установлено несколько версий gcc. Вы можете проверить, используя:

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

Обычно / usr / bin / gcc будет символически связан с / etc / alternatives / gcc, который снова будет связан с /usr/bin/gcc-4.6 или /usr/bin/gcc-4.8 (в если у вас установлен gcc-4.6, gcc-4.8.)

С помощью этой ссылки вы можете запустить gcc и g ++ в одной и той же версии, и это может решить вашу проблему!

7 голосов
/ 07 мая 2012

Каждый компилятор имеет свой собственный каталог libexec /.Обычно каталог libexec содержит небольшие вспомогательные программы, вызываемые другими программами.В этом случае gcc ищет свой собственный компилятор cc1.Ваша машина может содержать разные версии gcc, и каждая версия должна иметь свой собственный cc1.Обычно эти компиляторы расположены по адресу:


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

Аналогичный путь для g ++.Вышеуказанная ошибка означает, что используемая текущая версия gcc не может найти свой собственный компилятор 'cc1'.Обычно это указывает на проблему ПУТИ.

2 голосов
/ 15 июня 2015

У меня возникла такая же проблема при разветвлении с 'python'; главная причина в том, что путь поиска относительный, если вы не вызовете g++ как /usr/bin/g++, он не сможет определить канонические пути для вызова cc1plus.

0 голосов
/ 13 сентября 2016

Установите g ++ в openSuSE, запустите

zypper in gcc-c++
0 голосов
/ 18 ноября 2013

У меня была такая же проблема с gcc "gnat1", и это было из-за неправильного пути. Gnat1 был на версии 4.6, но я выполнял версию 4.8.1, которую я установил. В качестве временного решения я скопировал gnat1 из 4.6 и вставил в папку 4.8.1.

Путь к gcc на моем компьютере: / usr / lib / gcc / i686-linux-gnu /

Вы можете найти путь с помощью команды поиска:

find /usr -name "gnat1"

В вашем случае вы бы искали cc1plus:

find /usr -name "cc1plus"

Конечно, это быстрое решение, и более надежным ответом будет исправление сломанного пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...