it-swarm.com.ru

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

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

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

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

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

спасибо

75
Zeyi Fan

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

yum install gcc-c++
97
hahakubile

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

Sudo apt-get install g++
37
Sunil Kumar

Эта проблема может возникнуть, если установлены разные версии 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 ++ работать в одной и той же версии, и это может решить вашу проблему!

16
pulkitag

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


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

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

7
Freddy

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

2
vliu

У меня была та же проблема с 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"

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

0
rtrigoso

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

zypper in gcc-c++
0
David Hamner