Cuando compilo el programa C / C ++ con popen
in php
... me sale este error:
g++: error trying to exec 'cc1plus': execvp: No such file or directory
pero si ejecuto el código php en shell ... funciona bien ...
en Arch Linux ..
Código 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;
?>
Gracias
php xx.php
comohttp
usuario. todos ellos tienen éxito ... y la salida deg++ -v
en código php es similar con su en shell ..gcc -print-search-dirs
¿Qué tal esto? ¿Son iguales las salidas ?Respuestas:
Necesitas instalar el
gcc-c++
paquete.fuente
apk add g++
No sé por qué, pero acabo de cambiar el nombre de mi archivo fuente COLARR.C a colarr.cy ¡el error desapareció! probablemente necesites esto
fuente
.C
extensión en mayúsculas es una de varias convenciones para la fuente C ++,.cpp
y.cc
son otras dos. La.C
convención de mayúsculas interactúa mal con los sistemas de archivos que no distinguen entre mayúsculas y minúsculas (Windows, macOS, por ejemplo). Cuando lo hizoCOLARR.C
, el sistema probablemente lo estaba viendo como un archivo fuente C ++; yacolarr.c
que es un archivo fuente en C.Este problema puede ocurrir si se instalan diferentes versiones de g ++ y gcc.
Si estos no dan el resultado, probablemente tenga instaladas varias versiones de gcc. Puede verificar usando:
Por lo general, / usr / bin / gcc estará vinculado de forma simbólica a / etc / alternativas / gcc, que de nuevo está vinculado de forma simbólica para decir /usr/bin/gcc-4.6 o /usr/bin/gcc-4.8 (en caso de que tenga gcc-4.6, gcc-4.8 instalados).
Al cambiar este enlace, puede hacer que gcc y g ++ se ejecuten en la misma versión y esto puede resolver su problema.
fuente
Cada compilador tiene su propio directorio libexec /. Normalmente, el directorio libexec contiene pequeños programas auxiliares llamados por otros programas. En este caso, gcc está buscando su propio compilador 'cc1'. Su máquina puede contener diferentes versiones de gcc, y cada versión debe tener su propio 'cc1'. Normalmente, estos compiladores se encuentran en:
Ruta similar para g ++. El error anterior significa que la versión actual de gcc utilizada no puede encontrar su propio compilador 'cc1'. Esto normalmente apunta a un problema PATH.
fuente
strace g++ [args]
, descubrí que estaba probando la carpeta incorrecta en la ruta y luego me rendí.Tuve el mismo problema al bifurcar con 'python'; la razón principal es que la ruta de búsqueda es relativa, si no llama
g++
como/usr/bin/g++
, no podrá determinar las rutas canónicas para llamarcc1plus
.fuente
Tuve el mismo problema con gcc "gnat1" y se debió a que la ruta estaba mal. Gnat1 estaba en la versión 4.6 pero estaba ejecutando la versión 4.8.1, que había instalado. Como solución temporal, copié gnat1 de 4.6 y lo pegué en la carpeta 4.8.1.
La ruta a gcc en mi computadora es / usr / lib / gcc / i686-linux-gnu /
Puede encontrar la ruta usando el comando de búsqueda:
En su caso, buscaría cc1plus:
Por supuesto, esta es una solución rápida y una respuesta más sólida sería arreglar el camino roto.
fuente
Instale g ++ en openSuSE run
fuente
Algo salió mal con la instalación de GCC . Intente reinstalarlo así:
En Ubuntu,
g++
es un paquete de dependencia que instala la versión predeterminada deg++
para su versión de sistema operativo. Entonces, simplemente quitar e instalar el paquete nuevamente no funcionará, ya que instalará la versión predeterminada. Es por eso que necesita reinstalar.Nota: puede reemplazar el
g++-5
con lag++
versión que desee . Para encontrar sug++
versión actual , ejecute esto:fuente
También puede tener este problema si tiene la variable de entorno GCC_ROOT apuntando a una ubicación incorrecta. Probablemente la solución más simple podría ser (en un sistema similar a * nix):
en casos más complicados, es posible que deba volver a apuntar a la ubicación adecuada
fuente