Zey*_*Fan 82 php c c++ linux gcc
当我用... 编译C/C++程序时popen,php我收到此错误:
g++: error trying to exec 'cc1plus': execvp: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但如果我在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;
?>
Run Code Online (Sandbox Code Playgroud)
谢谢
hah*_*ile 103
你需要安装gcc-c++包.
yum install gcc-c++
Run Code Online (Sandbox Code Playgroud)
Sun*_*mar 39
我不知道为什么,但我只是将我的源文件COLARR.C重命名为colarr.c,错误消失了!可能你需要这个
sudo apt-get install g++
Run Code Online (Sandbox Code Playgroud)
pul*_*tag 19
如果安装了不同版本的g ++和gcc,则可能会发生此问题.
g++ --version
gcc --version
Run Code Online (Sandbox Code Playgroud)
如果这些没有给出结果,您可能安装了多个版本的gcc.您可以使用以下方式检查:
dpkg -l | grep gcc | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
通常,/ usr/bin/gcc将被sym链接到/ etc/alternatives/gcc,它再次被sym链接到/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
Run Code Online (Sandbox Code Playgroud)
g ++的类似路径.上面的错误意味着,当前使用的gcc版本无法找到自己的'cc1'编译器.这通常指向PATH问题.
| 归档时间: |
|
| 查看次数: |
107716 次 |
| 最近记录: |