douzheren3349
douzheren3349
2012-01-16 10:26

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

已采纳

When I compile C/C++ program with popen in php... I got this error:

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

but if I run php code in shell.. it works fine..

in Arch Linux..

PHP Code:

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

thanks

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • douzhengzuo7283 douzhengzuo7283 7年前

    You need to install gcc-c++ package.

    yum install gcc-c++
    
    点赞 评论 复制链接分享
  • duanfuxing2212 duanfuxing2212 7年前

    I don't know why but i just renamed my source file COLARR.C to colarr.c and the error vanished! probably you need this

    sudo apt-get install g++
    
    点赞 评论 复制链接分享
  • douli4337 douli4337 8年前

    I had the same issue with gcc "gnat1" and it was due to the path being wrong. Gnat1 was on version 4.6 but I was executing version 4.8.1, which I had installed. As a temporary solution, I copied gnat1 from 4.6 and pasted under the 4.8.1 folder.

    The path to gcc on my computer is /usr/lib/gcc/i686-linux-gnu/

    You can find the path by using the find command:

    find /usr -name "gnat1"
    

    In your case you would look for cc1plus:

    find /usr -name "cc1plus"
    

    Of course, this is a quick solution and a more solid answer would be fixing the broken path.

    点赞 评论 复制链接分享
  • drob50257447 drob50257447 7年前

    This problem can happen if different versions of g++ and gcc are installed.

       g++ --version
       gcc --version
    

    If these don't give the result, you probably have multiple versions of gcc installed. You can check by using:

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

    Usually, /usr/bin/gcc will be sym-linked to /etc/alternatives/gcc which is again sym-linked to say /usr/bin/gcc-4.6 or /usr/bin/gcc-4.8 (In case you have gcc-4.6, gcc-4.8 installed.)

    By changing this link you can make gcc and g++ run in the same version and this may resolve your issue!

    点赞 评论 复制链接分享
  • doujing5435 doujing5435 9年前

    Each compiler has its own libexec/ directory. Normally libexec directory contains small helper programs called by other programs. In this case, gcc is looking for its own 'cc1' compiler. Your machine may contains different versions of gcc, and each version should have its own 'cc1'. Normally these compilers are located on:

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

    Similar path for g++. Above error means, that the current gcc version used is not able to find its own 'cc1' compiler. This normally points to a PATH issue.

    点赞 评论 复制链接分享
  • douhei2002 douhei2002 5年前

    Install g++ on openSuSE run

    zypper in gcc-c++
    
    点赞 评论 复制链接分享
  • dsk95913 dsk95913 6年前

    I had the same issue when forking with 'python'; the main reason is that the search path is relative, if you don't call g++ as /usr/bin/g++, it will not be able to work out the canonical paths to call cc1plus.

    点赞 评论 复制链接分享