"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo compilar y vincular varios archivos .cpp en un único binario?

¿Cómo compilar y vincular varios archivos .cpp en un único binario?

Publicado el 2024-11-11
Navegar:736

How to Compile and Link Multiple .cpp Files into a Single Binary?

Cómo compilar y vincular varios archivos .cpp en un binario

Este artículo tiene como objetivo abordar la cuestión de compilar varios archivos .cpp en .o objetos y vincularlos en un solo binario.

Configuración de Makefile

Para lograr esto, se crea un Makefile se puede utilizar con los siguientes contenidos:

SRC_DIR = ./src
OBJ_DIR = ./obj
SRC_FILES = $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))

main.exe: $(OBJ_FILES)
    g   $(LDFLAGS) -o $@ $^

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    g   $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

Explicación:

  • SRC_DIR: Especifica el directorio que contiene los archivos .cpp de origen.
  • OBJ_DIR: Indica el directorio donde se crearán los objetos .o.
  • SRC_FILES: Una lista de todos los archivos .cpp en SRC_DIR.
  • OBJ_FILES: Una lista de todos los objetos .o que se generarán.
  • main.exe: El nombre del archivo final binario.
  • LDFLAGS: Indicadores del vinculador.
  • CPPFLAGS: Indicadores del preprocesador C.
  • CXXFLAGS: Indicadores del compilador de C.

Gráfico de dependencia Generación

Para generar automáticamente dependencias entre los archivos fuente y objeto, agregue lo siguiente al Makefile:

CXXFLAGS  = -MMD
-include $(OBJ_FILES:.o=.d)

Mejores prácticas

Este enfoque se usa comúnmente para compilar y vincular múltiples archivos C. Sin embargo, es esencial consultar el Manual de creación de GNU para obtener orientación adicional y opciones avanzadas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3