문제

안녕하세요 : 빠른 질문 : '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 명령 줄을 추론 할 수 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top