Acabo de encontrar en mi Ubuntu, hay dos diferentes compilador de C++: /usr/bin/g++ y /usr/bin/c++. Yo no estoy familiarizado con el último, pero el hombre c++ sólo salta a la página del manual de gcc. Me pregunto ¿cuál es su diferencia como los compiladores de C++?

InformationsquelleAutor Tim | 2009-11-11

4 Comentarios

  1. 50

    Esto es típico de Ubuntu enlace simbólico caos.

    Si ls -l /usr/bin/c++, verás que en realidad es un enlace simbólico. a:

    /etc/alternatives/c++

    Que a su vez, también es un enlace simbólico a:

    /usr/bin/g++

    Así, en sistemas Ubuntu, c++ es g++. El razonamiento detrás de el enlace de direccionamiento indirecto es que hay varios paquetes que podría proporcionar un compilador de c++ (tales como las diferentes versiones de g++). Vas a ver mucho de esto en Ubuntu. Por ejemplo, qmake es un enlace a un archivo en /etc/alternatives, que es (en mi sistema) un enlace a /usr/bin/qmake-qt3.

    • en Fedora 21, /usr/bin/c++ y /usr/bin/g++ son tanto los archivos binarios (es decir, no los enlaces simbólicos)… pero los dos archivos son idénticos (mismo número de bytes y el mismo md5sum). (Un enlace simbólico parece más apropiado… no sé por qué se hizo una copia del mismo archivo. Tanto g++ y c++ son proporcionados por las mismas rpm gcc-c++.)
  2. 27

    c++ es un estándar de nombre de un C++ compilador en un sistema.

    Sobre un sistema GNU casi seguramente han GCC (GNU compiler collection) instalado, que incluye un C++ compilador llamado g++ (‘g’ para GNU). Pero para ser compatible con POSIX, que instalar este compilador como c++ también, a veces c++ es un enlace simbólico a g++ a veces es un enlace duro, que a veces es el mismo archivo instalado dos veces.

    Este puede no ser el caso para otros sistemas como FreeBSD o NetBSD. Es posible que esos sistemas no tienen GCC (y otros GNU cosas) instalado.

    En mi sistema de estos dos archivos son sólo idéntica:

    % diff `which c++` `which g++`
    % echo $?
    0

    Esto significa que c++ al menos invoca el mismo compilador, pero en teoría se puede interpretar algunas opciones de línea de comandos de forma diferente o tienen distintos valores predeterminados. Alguien con más conocimiento es libre para extender la respuesta en este sentido.

    • gracias me verificación de suma de control md5 de c++ y g++, y que son las mismas! Pero lo que de aquí 2 archivos que hacer el mismo trabajo?
    • Sí, no hay ninguna diferencia, y usted puede usar lo que te gusta. Si utiliza GCC opciones específicas en la construcción de la entonces te recomiendo g++, sólo entonces, es claro, pero siempre se debe permitir al usuario reemplazar el compilador con el CXX variable.
    • Incluso si los archivos son idénticos, esto no significa que son equivalentes. Un programa puede comportarse de manera diferente dependiendo de lo que se utilizó el nombre de llamarlo (por ejemplo gunzip y zcat son enlaces a gzip, y diferentes argumentos predeterminados se utilizan cuando gzip se llama con los otros dos nombres).
    • uy, a la derecha, se olvidó de eso. Entonces esto no sólo puede ser imprecisa respuesta, pero se equivoca por completo.
    • Y en sistemas BSD es casi seguramente equivocada. Estoy confundido ahora, tengo que revisar la respuesta.
    • cambia la respuesta correcta en menos, pero todavía no sé la diferencia real, no?
    • Ni idea de si hay alguna diferencia.
    • FreeBSD 9 ha gcc instalado, pero va a ser eliminado para la mayoría de las plataformas en FreeBSD 10.

  3. 11

    En mi máquina, c++ es un enlace:

    $ readlink /usr/bin/c++
    /etc/alternatives/c++
    $ readlink /etc/alternatives/c++
    /usr/bin/g++

    Así c++ es sólo un enlace a g++.

  4. 3

    g++ el compilador c++ de gnu c++ es el sistema por el compilador de c++, en el caso de ubuntu, C++ es un enlace a g++, sin embargo, en otro sistema podría ser muy bien un enlace a un no compilador gcc. como alguien dijo vi vs vim. sólo porque un enlace a vi existe en el sistema, no significa que es vim podría ser cualquier clon de vi.

Dejar respuesta

Please enter your comment!
Please enter your name here