编译错误:“g ++:错误尝试执行'cc1plus':execvp:没有这样的文件或目录”

时间:2012-01-16 10:26:45

标签: php c++ c linux gcc

当我在popen中使用php编译C / C ++程序时...我收到此错误:

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

但如果我在shell中运行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;
?>

感谢

10 个答案:

答案 0 :(得分:96)

您需要安装gcc-c++包。

yum install gcc-c++

答案 1 :(得分:37)

我不知道为什么,但我只是将源文件COLARR.C重命名为colarr.c,错误消失了! 可能你需要这个

sudo apt-get install g++

答案 2 :(得分:15)

如果安装了不同版本的g ++和gcc,则会出现此问题。

   g++ --version
   gcc --version

如果这些没有给出结果,您可能安装了多个版本的gcc。您可以使用以下方式进行检查:

    dpkg -l | grep gcc | awk '{print $2}'

通常,/ usr / bin / gcc将被sym链接到/ etc / alternatives / gcc,它再次被sym链接到/usr/bin/gcc-4.6或/usr/bin/gcc-4.8(In你安装了gcc-4.6,gcc-4.8的情况。)

通过更改此链接,您可以使gcc和g ++在同一版本中运行,这可能会解决您的问题!

答案 3 :(得分:7)

每个编译器都有自己的libexec /目录。通常,libexec目录包含其他程序调用的小帮助程序。在这种情况下,gcc正在寻找自己的'cc1'编译器。您的机器可能包含不同版本的gcc,每个版本都应该有自己的'cc1'。通常这些编译器位于:


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

g ++的类似路径。上面的错误意味着,当前使用的gcc版本无法找到自己的'cc1'编译器。这通常指向PATH问题。

答案 4 :(得分:2)

用'python'分叉时遇到了同样的问题;主要原因是搜索路径是相对的,如果您不将g++称为/usr/bin/g++,则无法计算出调用cc1plus的规范路径。

答案 5 :(得分:2)

对于 apk,最简单的方法是:

<xsl:variable name="data" select="$header/sections/code[@key=&quot;status1&quot;]" xpath-default-namespace=""/>

答案 6 :(得分:0)

我和gcc“gnat1”有同样的问题,这是由于路径错误。 Gnat1是4.6版本,但是我正在执行我安装的4.8.1版本。作为临时解决方案,我从4.6复制了gnat1并粘贴在4.8.1文件夹下。

我电脑上gcc的路径是/ usr / lib / gcc / i686-linux-gnu /

您可以使用find命令找到路径:

find /usr -name "gnat1"

在你的情况下,你会寻找cc1plus:

find /usr -name "cc1plus"

当然,这是一个快速的解决方案,更坚实的答案是修复破碎的路径。

答案 7 :(得分:0)

安装g ++ 在openSuSE上运行

zypper in gcc-c++

答案 8 :(得分:0)

您的GCC安装出现了问题。尝试像这样重新安装它:

sudo apt-get install --reinstall g++-5

在Ubuntu中,g++是一个依赖项程序包,它将为您的OS版本安装默认版本的g++。因此,简单地再次删除并安装软件包将无法正常工作,因为它将安装默认版本。这就是为什么您需要重新安装。

注意:您可以将g++-5替换为所需的g++版本。要找到您当前的g++版本,请运行以下命令:

g++ --version

答案 9 :(得分:0)

如果环境变量GCC_ROOT指向错误的位置,也可能会出现此问题。可能最简单的修复是(在类似* nix的系统上):

unset GCC_ROOT

在更复杂的情况下,您可能需要将其重新指向正确的位置