Vinculación del código C ++ con 'gcc' (sin g ++)
Pregunta
Hola a todos: pregunta rápida: estoy en una situación en la que sería útil generar mi ejecutable C ++ usando solo 'gcc' (sin g ++). El motivo de esto es que tengo que enviar el código a un servidor de envío automático que no reconoce el comando 'g ++' (o 'c ++', para el caso).
En mis experimentos, mientras estoy compilando gcc funciona bien. El problema es que cuando trato de vincular los archivos de objetos generados se estropea. Ahora, según lo que entendí de la página del manual de gcc (puede que esté muy lejos, así que dime si lo soy), g ++ es básicamente gcc, pero enlaza la biblioteca de C ++.
Si esto es cierto, ¿cómo puedo (si es posible) vincular explícitamente la biblioteca de C ++ sin usar el comando g ++ (o c ++)?
EDITAR: estoy agregando el archivo MAKE para ilustrar mejor el problema:
COMPILER = gcc
CFLAGS = -Wall -g -x c++
# MODULE COMPILATION
model: modules/model.h modules/sources/model.cpp
$(COMPILER) $(CFLAGS) -c modules/sources/model.cpp -o obj/model.o
algorithms: modules/algorithms.h modules/sources/algorithms.cpp
$(COMPILER) $(CFLAGS) -c modules/sources/algorithms.cpp -o obj/algorithms.o
io: modules/io.h modules/sources/io.cpp
$(COMPILER) $(CFLAGS) -c modules/sources/io.cpp -o obj/io.o
stopwatch: modules/stopwatch.h modules/sources/stopwatch.cpp
$(COMPILER) $(CFLAGS) -c modules/sources/stopwatch.cpp -o obj/stopwatch.o
# EXECUTABLE GENERATION
exe: model algorithms io stopwatch
$(COMPILER) $(CFLAGS) main.cpp obj/model.o obj/algorithms.o obj/io.o obj/stopwatch.o -o bin/process
# DEFAULT TEST CASE
run: exe
./bin/process -i data/nasa_small.log -a data/nasa_small.access -s data/nasa_small.stack
# CLEANING ROUTINE
clean:
rm -f obj/*
Solución
Puede vincular la biblioteca estándar de c ++ con el indicador -l
a gcc:
gcc cplusplus.o -lstdc++ -o myexe
Otros consejos
Si ejecuta g ++ con el " -v " opción, mostrará qué comando y opciones utiliza. Debería poder deducir la línea de comando gcc correcta desde allí.