Ошибка компиляции: "g++: ошибка при попытке выполнить" cc1plus ": execvp: нет такого файла или каталога"

Когда я компилирую программу 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;
?>

спасибо

Ответ 1

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

yum install gcc-c++

Ответ 2

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

sudo apt-get install g++

Ответ 3

Эта проблема может возникнуть, если установлены разные версии 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 (In если у вас установлен gcc-4.6, gcc-4.8.)

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

Ответ 4

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


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

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

Ответ 5

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

Ответ 6

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

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

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

find /usr -name "gnat1"

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

find /usr -name "cc1plus"

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

Ответ 7

Установить g++ при запуске openSuSE

zypper in gcc-c++