Question

Bonjour à tous: question rapide: je suis dans une situation où il serait utile de générer mon exécutable C ++ en utilisant uniquement 'gcc' (sans g ++). La raison en est que je dois soumettre le code à un serveur de soumission automatique qui ne reconnaît pas la commande "g ++" (ou "c ++", d'ailleurs).

Dans mes expériences, même si je compile , gcc fonctionne bien. Le problème, c'est que lorsque j'essaie de lier les fichiers d'objet générés, il est perturbé. Maintenant, sur la base de ce que j’ai compris de la page de manuel de gcc (je suis peut-être très différent, dites-moi si je le suis), g ++ est fondamentalement gcc, mais elle relie la bibliothèque C ++.

Si cela est vrai, comment puis-je (si possible) lier explicitement la bibliothèque C ++ sans à l'aide de la commande g ++ (ou c ++)?

EDIT: j'ajoute le fichier Make pour mieux illustrer le problème:

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/*
Était-ce utile?

La solution

Vous pouvez lier la bibliothèque c ++ standard avec l'indicateur -l à gcc:

gcc cplusplus.o -lstdc++ -o myexe

Autres conseils

Si vous exécutez g ++ avec le " -v " option, il montrera quelle commande et quelles options il utilise. Vous devriez pouvoir déduire la bonne ligne de commande gcc à partir de là.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top