Когда я компилирую программу C / C ++ с помощью popen
in 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;
?>
Благодарность
php xx.php
от имениhttp
пользователя. все ониg++ -v
gcc -print-search-dirs
как насчет этого? Выходы такие же ?Ответы:
Вам необходимо установить
gcc-c++
пакет.yum install gcc-c++
источник
apk add g++
Не знаю почему, но я просто переименовал свой исходный файл COLARR.C в colarr.c, и ошибка исчезла! вероятно тебе это нужно
sudo apt-get install g++
источник
.C
расширение верхнего регистра - это одно из ряда соглашений для исходного кода C ++,.cpp
а.cc
также два других. Соглашение о верхнем регистре.C
плохо взаимодействует с файловыми системами без учета регистра (например, Windows, macOS). Когда у вас это былоCOLARR.C
, система, вероятно, смотрела на него как на исходный файл C ++; так какcolarr.c
это исходный файл на C.Эта проблема может возникнуть, если установлены разные версии 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 ++ работать в одной версии, и это может решить вашу проблему!
источник
У каждого компилятора есть собственный каталог libexec /. Обычно каталог libexec содержит небольшие вспомогательные программы, вызываемые другими программами. В этом случае gcc ищет собственный компилятор cc1. На вашем компьютере могут быть разные версии gcc, и каждая версия должна иметь свой собственный cc1. Обычно эти компиляторы расположены по адресу:
/usr/local/libexec/gcc/<architecture>/<compiler>/<compiler_version>/cc1
Аналогичный путь для g ++. Вышеупомянутая ошибка означает, что текущая используемая версия gcc не может найти свой собственный компилятор cc1. Обычно это указывает на проблему с PATH.
источник
strace g++ [args]
я обнаружил, что он пытается не ту папку на пути, а затем отказывается.У меня была такая же проблема при разветвлении с помощью python; Основная причина в том, что путь поиска относительный, если вы не вызовете
g++
as/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++
источник
Что-то пошло не так с вашей установкой GCC . Попробуйте переустановить его так:
sudo apt-get install --reinstall g++-5
В Ubuntu
g++
это пакет зависимостей, который устанавливает версию по умолчаниюg++
для вашей версии ОС. Поэтому простое удаление и повторная установка пакета не сработает, потому что будет установлена версия по умолчанию. Вот почему нужно переустановить.Примечание. Вы можете заменить на
g++-5
нужнуюg++
версию. Чтобы найти свою текущуюg++
версию, запустите это:g++ --version
источник
У вас также может возникнуть эта проблема, если у вас есть переменная среды GCC_ROOT, указывающая на неправильное местоположение. Вероятно, самое простое исправление может быть (в системе типа * nix):
unset GCC_ROOT
в более сложных случаях вам может потребоваться перенаправить его в нужное место
источник