문제
안녕하세요 : 빠른 질문 : 'GCC'(G ++없이) 만 사용하여 C ++ 실행 파일을 생성하는 것이 유용한 상황에 처해 있습니다. 그 이유는 코드를 'G ++'(또는 'C ++') 명령을 인식하지 못하는 자동 제출 서버에 코드를 제출해야하기 때문입니다.
내 실험에서 컴파일 GCC는 잘 작동합니다. 문제는 생성 된 객체 파일을 연결하려고 할 때 엉망이된다는 것입니다. 이제 GCC MAN 페이지에서 이해 한 내용을 기반으로 (나는 꺼져있을 수 있습니다.
이것이 사실이라면 어떻게 C ++ 라이브러리를 명시 적으로 연결할 수 있습니까? 없이 G ++ (또는 C ++) 명령을 사용하십니까?
편집하다: 문제를 더 잘 설명하기 위해 makefile을 추가하고 있습니다.
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/*
해결책
표준 C ++ 라이브러리를 -l
GCC에 플래그 :
gcc cplusplus.o -lstdc++ -o myexe
다른 팁
"-v"옵션으로 g ++를 실행하면 어떤 명령과 옵션이 사용되는지 표시됩니다. 올바른 GCC 명령 줄을 추론 할 수 있어야합니다.
제휴하지 않습니다 StackOverflow