resumen de uso de g ++

Este es un artículo que no recordaba dónde lo leí antes, pero no puedo encontrarlo ahora. Este es solo un registro para su referencia.

gcc es un compilador multiplataforma de C / C ++ que se puede utilizar en plataformas Linux / Windows. Tiene funciones muy potentes y una estructura flexible. Puede admitir varios lenguajes a través de diferentes módulos front-end, como Java y Fortran., Recopilación de Pascal, Modula-3 y Ada. Muchos proyectos y bibliotecas famosos se compilan con gcc, como nginx, libevent, etc.
g ++ se puede utilizar en la línea de comandos, o puede llamar al entorno g ++ configurado por el sistema configurando el entorno de compilación del IDE, puede configurarlo usted mismo según sus necesidades. A continuación se muestran algunas experiencias y un resumen de algunos bloggers que utilizan el compilador g ++.

1. proceso de compilación de g ++

g ++, cuando se ejecuta en la compilación del código fuente, para seguir los siguientes cuatro pasos:
(1) Pretratamiento: definiciones de macro en el programa fuente, que comprende procesar archivos de encabezado, generar el sufijo de archivo .i (usar)
usando el formato:

g++ -E hello.cpp -o hello.i

hello.cpp es el archivo fuente que se compilará y la opción -o especifica el nombre del archivo de salida. Aquí, use la opción -E para compilar y generar el archivo hello.i
(2) Conviértalo en un archivo ensamblador: Use la opción -S para convertir el archivo .i preprocesado en el archivo .S de código ensamblador de la máquina de destino.
Formato:

g++ -S hello.i  -o  hello.s

Utilice este parámetro para compilar el archivo .i para generar el archivo .s, y el nombre del archivo de salida también se especifica con la opción -o.
(3) Archivo ensamblador -> archivo objeto, es decir, convertido a código de máquina: use la opción -c
Use formato:

g++ -c hello.s -o hello.o

(4) Enlace: Enlace el archivo de destino generado en el paso anterior como un archivo ejecutable, utilizando el parámetro -o
. Formato:

g++ hello.o  -o  hello
 以上过程是g++工具编译cpp源程序的具体过程,在实际使用时我们可以不用按照流程一步步编译,可以一步到位将源程序编译为可执行文件,只需要使用如下命令:
g++  hello.cpp -o  hello

2. g ++ opciones de compilación de uso común

 在使用g++工具进行编译时,我们可以附加一些编译选项让编译更加智能,从而方便我们查看编译错误和警告。g++提供了许多有用的编译选项,下面总结一些常用选项:
  • o ARCHIVO: Especifique el nombre del archivo de salida. Esta opción no es necesaria cuando se compila en el código de destino. Si no se especifica FILE, el nombre de archivo predeterminado es a.out
  • c: solo compile y genere archivos de objeto, no enlace
  • m486: optimización de código para 486
  • Muro: permite todas las advertencias útiles que puede proporcionar gcc, y también puedes usar -W (advertencia) para marcar advertencias específicas.
    Usa el formato:
g++ -Wall hello.cpp -o hello
  • Werror: convierte todas las advertencias en errores para abortar el proceso de compilación cuando se produce una advertencia;
  • v: muestra los comandos utilizados en cada paso del proceso de compilación;
  • static: enlazar biblioteca estática, es decir, realizar enlace estático, g ++ tiene como valor predeterminado enlazar biblioteca dinámica, si necesita enlazar biblioteca estática, debe usar esta opción para especificar;
  • g: Incluir información de depuración estándar en el programa ejecutable, el archivo ejecutable generado usando esta opción se puede depurar con la herramienta gdb;
  • w: Desactive todas las advertencias, se recomienda no utilizar esta opción
  • shared: genera archivos de objetos compartidos. Usualmente se usa al crear una biblioteca compartida;
  • Activado: esta es una opción de optimización. Si especifica esta opción en el momento de la compilación, el compilador optimizará el código en diversos grados de acuerdo con el valor de n (n está entre 0 y 3), donde -O0 significa que no hay optimización y n Cuanto mayor sea el valor, mayor será el grado de optimización;
  • L: opción de dependencia del archivo de biblioteca. Esta opción se utiliza para especificar la ruta del archivo de biblioteca de la que depende el programa fuente compilado. El archivo de biblioteca puede ser una biblioteca de enlace estático o una biblioteca de enlace dinámico. La ruta de biblioteca predeterminada del sistema Linux es / usr / lib. Si el archivo de biblioteca requerido no está en esta ruta, use -L para especificar
g++  foo.cpp  -L/home/lib  -lfoo  -o   foo
  • I: Esta opción se usa para especificar la ruta del archivo de encabezado de la que depende el programa al compilar el programa. La ruta de archivo de encabezado predeterminada de la plataforma Linux se encuentra en / usr / include. Si no está en este directorio, debe usar esta opción para especificar la ruta del archivo de encabezado
    gcc foo al compilar . cpp -I / home / include -o foo

3. Compila la biblioteca dinámica

Además de compilar programas fuente para generar archivos ejecutables, g ++ también puede compilar bibliotecas de enlaces dinámicos. El método es el siguiente:
(1) Complete paso a paso

gcc -fPIC -c func.cpp -o func.o 
gcc -shared -o libfunc.so func.o

(2) Completar en un solo paso

gcc -fPIC -shared -o libfunc.so func.cpp

4.Hacer suma Makefile

El uso de herramientas g ++ en la línea de comandos se ha introducido anteriormente. Podemos usar g ++ en la línea de comandos para compilar archivos de programa fuente únicos o múltiples. Sin embargo, si se encuentra en una situación en la que es necesario compilar muchos archivos al mismo tiempo, la compilación de la línea de comandos de g ++ es demasiado problemática. En este momento, debe utilizar make para automatizar la compilación. Podemos escribir el archivo de reglas de la herramienta make-Makefile, definir algunas reglas de compilación en este archivo y luego usar la herramienta make para llamar automáticamente a g ++ para la compilación por lotes, lo que puede mejorar enormemente la eficiencia. Los estudiantes interesados ​​pueden encontrar el uso de make por sí mismos, y no lo expandiré aquí.
Materiales de referencia:
1.https:
//blog.csdn.net/kwame211/article/details/84560400 2.https: //blog.csdn.net/drdairen/article/details/53740092

Supongo que te gusta

Origin blog.csdn.net/qq_24649627/article/details/110000320
Recomendado
Clasificación