mac ejecutar cpp compiler compile compilar c++ c macos console terminal

cpp - ¿Cómo compilar y ejecutar C/C++ en una consola Unix/terminal de Mac?



compile cpp mac (13)

¿Cómo puedo compilar / ejecutar C o C ++ en la consola Unix o en una terminal Mac?

(Lo sé, olvídalo y vuelve a aprenderlo. Es hora de escribirlo).


Agregue los siguientes para obtener las mejores advertencias, no se arrepentirá. Si puede, compile WISE (advertencia es error)

- Wall -pedantic -Weffc++ -Werror


Dos pasos para mi:

primero:

make foo

entonces:

./foo


Ejecutar un archivo .C usando el terminal es un proceso de dos pasos. El primer paso es escribir gcc en el terminal y soltar el archivo .C en el terminal, y luego presionar Enter :

username$ gcc /Desktop/test.c

En el segundo paso, ejecute el siguiente comando:

username$ ~/a.out



Este es el comando que funciona en todas las máquinas Unix ... Lo uso en Linux / Ubuntu, pero también funciona en OS X. Escriba el siguiente comando en Terminal.app .

$ g++ -o lab21 iterative.cpp

-o es la letra O no cero

lab21 será tu archivo ejecutable

iterative.cpp es tu archivo c ++

Después de ejecutar ese comando, escriba lo siguiente en la terminal para ejecutar su programa:

$ ./lab21


La ejecución de todas las aplicaciones en un entorno Unix (Linux, Mac OS X, AIX, etc.) depende de la ruta de búsqueda ejecutable.

Puede visualizar esta ruta en el terminal con este comando:

echo $ PATH

En Mac OS X (de forma predeterminada), esto mostrará la siguiente ruta de búsqueda separada por dos puntos:

/ usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin

Por lo tanto, cualquier ejecutable en los directorios enumerados puede ejecutarse simplemente escribiendo su nombre. Por ejemplo:

cat mytextfile.txt

Esto ejecuta /bin/cat y muestra mytextfile.txt en la terminal.

Para ejecutar cualquier otro comando que no esté en la ruta de búsqueda ejecutable, se requiere que califique la ruta al ejecutable. Así que supongamos que tengo un ejecutable llamado MyProgram en mi directorio de inicio en Mac OS X. Puedo calificarlo completamente así:

/ Usuarios / oliver / MyProgram

Si se encuentra en una ubicación cercana al programa que desea ejecutar, puede calificar el nombre con una ruta parcial. Por ejemplo, si MyProgram estaba en el directorio /Users/oliver/MyProject I y yo estaba en mi directorio personal, puedo calificar el nombre del ejecutable de esta manera y hacer que se ejecute:

MyProject / MyProgram

O di que estaba en el directorio /Users/oliver/MyProject2 y quería ejecutar /Users/oliver/MyProject/MyProgram Puedo usar una ruta relativa como esta para ejecutarla:

../MyProject/MyProgram

De manera similar, si estoy en el mismo directorio que MyProgram , necesito usar una ruta relativa de "directorio actual". El directorio actual en el que se encuentra es el carácter del período seguido de una barra inclinada. Por ejemplo:

./Mi programa

Para determinar en qué directorio está actualmente en uso, use el comando pwd .

Si comúnmente está colocando programas en un lugar en su disco duro que desea ejecutar sin tener que calificar sus nombres. Por ejemplo, si tiene un directorio "bin" en su directorio de inicio para scripts de shell usados ​​regularmente de otros programas, puede ser conveniente alterar su ruta de búsqueda ejecutable.

Esto puede hacerse fácilmente creando o editando el archivo .bash_profile existente en su directorio de inicio y agregando las líneas:

#!/bin/sh export PATH=$PATH:~/bin

Aquí el carácter tilde (~) se está utilizando como un acceso directo para / Users / oliver. También tenga en cuenta que la línea hash bang (#!) Debe ser la primera línea del archivo (si aún no existe). Tenga en cuenta también que esta técnica requiere que su shell de inicio de sesión sea bash (el valor predeterminado en Mac OS X y la mayoría de las distribuciones de Linux). También tenga en cuenta que si desea que sus programas instalados en ~/bin se utilicen con preferencia a los ejecutables del sistema, debe reordenar la declaración de exportación de la siguiente manera:

export PATH=~/bin:$PATH


Para compilar programas C o C ++, hay un comando común:

  1. make filename

  2. ./filename

make construirá su archivo fuente en un archivo ejecutable con el mismo nombre. Pero si quiere usar la forma estándar, puede usar el compilador gcc para compilar programas C y g ++ para c ++

Para C:

gcc filename.c ./a.out

Para C ++:

g++ filename.cpp ./a.out


Ryan, estoy cambiando esto para que sea una respuesta en lugar de un comentario, ya que parece que fui demasiado breve. Haz todo esto en "Terminal".

Para usar el compilador G ++, necesitas hacer esto:

  1. Navegue al directorio en el que almacenó el archivo * .cpp.

    cd ~/programs/myprograms/
    (el ~ es un acceso directo para su hogar, es decir, / Users / Ryan / programs / myprograms /, reemplace con la ubicación que realmente utilizó).

  2. Compilarlo

    g++ input.cpp -o output.bin (output.bin puede ser cualquier cosa con cualquier extensión, en realidad. bin es común en Unix).

    No debería haber NADA devuelto si fue exitoso, y eso está bien . En general, obtienes devoluciones por fallas.

    Sin embargo, si escribe ls , verá la lista de archivos en el mismo directorio. Por ejemplo, vería las otras carpetas, input.cpp y output.bin

  3. Desde dentro del directorio, ahora ejecútelo con ./outbut.bin


Si se trata de un programa de origen simple simple:

make foo

donde el archivo fuente es foo.c o foo.cpp, etc.

Ni siquiera necesitas un archivo MAKE. Make tiene suficientes reglas incorporadas para construir su archivo fuente en un ejecutable del mismo nombre, menos la extensión.

Ejecutar el ejecutable recién creado es lo mismo que ejecutar cualquier programa, pero lo más probable es que necesites especificar la ruta al ejecutable, ya que el shell solo buscará lo que está en $PATH para encontrar ejecutables, y la mayoría de las veces eso no incluye el actual directorio ( . ).

Para ejecutar el ejecutable ejecutable foo :

./foo


Suponiendo que el directorio actual no está en la ruta, la sintaxis es ./[name of the program] .

Por ejemplo ./a.out


Una forma compacta de hacer eso podría ser:

make foo && ./$_

Es bueno tener un trazador de líneas para que pueda volver a ejecutar su ejecutable de nuevo fácilmente.


Use un makefile Incluso para proyectos muy pequeños (= un archivo), el esfuerzo probablemente valga la pena porque puede tener varios conjuntos de configuraciones de compilación para probar cosas. La depuración y la implementación funcionan mucho más fácilmente de esta manera.

Lea el manual de la make , parece bastante largo a primera vista, pero la mayoría de las secciones se pueden descuidar. En general, me tomó algunas horas y me hizo mucho más productivo.


gcc main.cpp -o main.out ./main.out