Когда я компилирую программу 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 (Если у вас есть 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
.
Установите g ++ при запуске openSuSE
zypper in gcc-c++
У меня была такая же проблема с 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"
Конечно, это быстрое решение, и более твердый ответ – это исправление неисправного пути.