Ответ 1
Вам нужно установить пакет gcc-c++
.
yum install gcc-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;
?>
спасибо
Вам нужно установить пакет gcc-c++
.
yum install gcc-c++
Я не знаю, почему, но я просто переименовал свой исходный файл COLARR.C в colarr.c, и ошибка исчезла! возможно вам это нужно
sudo apt-get install g++
Эта проблема может возникнуть, если установлены разные версии 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++ в одной и той же версии, и это может решить вашу проблему!
Каждый компилятор имеет свой собственный каталог libexec/. Обычно каталог libexec содержит небольшие вспомогательные программы, называемые другими программами. В этом случае gcc ищет собственный компилятор 'cc1'. Ваша машина может содержать разные версии gcc, и каждая версия должна иметь свой собственный "cc1". Обычно эти компиляторы расположены по адресу:
/usr/local/libexec/gcc/<architecture>/<compiler>/<compiler_version>/cc1
Аналогичный путь для g++. Выше ошибки означает, что текущая версия gcc не может найти свой собственный компилятор cc1. Обычно это указывает на проблему PATH.
У меня была такая же проблема при работе с "python"; основная причина в том, что путь поиска относительный, если вы не вызываете g++
как /usr/bin/g++
, он не сможет выработать канонические пути для вызова cc1plus
.
У меня была такая же проблема с 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"
Конечно, это быстрое решение, и более твердый ответ - это исправление неисправного пути.
Установить g++ при запуске openSuSE
zypper in gcc-c++