`GCC:错误尝试执行“CC1':execvp:没有这样的文件或directory`当编译程序以'在PHP popen`

当我编译C / C ++程序与popenphp ...我得到这个错误:

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

谢谢

--------------解决方案-------------

你需要安装gcc-c++封装。

yum install gcc-c++

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


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

对于G ++相似的路径。 上面的错误意味着,使用当前的gcc版本是不是能够找到自己的“CC1”编译器。 这通常指向一个路径问题。

我不知道为什么,但我只是改名为我的源文件COLARR.C到colarr.c和消失的错误! 也许你需要这个

sudo apt-get install g++

如果安装了G ++和GCC的不同版本可能会发生此问题。

g++ --version
gcc --version

如果这些不给结果,你可能已经安装了GCC的多个版本。 您可以通过使用查询:

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

通常情况下,在/ usr /斌/ gcc会被符号链接到/ etc /替代品/ GCC这又是符号链接说/usr/bin/gcc-4.6或/usr/bin/gcc-4.8(如果你有GCC-4.6,GCC-4.8安装。)

通过改变这个链接可以让gcc和g ++在同一个版本上运行,这可能会解决您的问题!

我有完全相同的问题开展gcc作为从交流程序中使用叉+ execvp子进程。 从终端我能成功编译使用相同的命令,并且路径和-print搜索 - 迪尔斯似乎是两个场景之间达成一致。

一些不成功的调试之后,我终于恢复了发射使用gcc INT系统(为const char *命令),一切突然再次合作(这将是奇怪的其他方式)。 我从来没有真正找到了究竟为什么以前没有工作,所以如果你找到答案,我会非常有兴趣。

我有同样的问题,用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"

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

分类:php 时间:2015-03-15 人气:0
本文关键词: PHP,LINUX,GCC
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 4.598 (s). 10 q(s)