Make file 생성시의 궁금점
gnu make 를 공부 중입니다.
폴더에, stack.cpp stack.h stackTest.h
이렇게 세개의 파일이 있구요 , 스택.h와cpp 는 스택에 대한 구현을 ,
테스트는 , cxxTEST를 이용한 테스트를 담고 있습니다
이클립스가 아닌 , makefile 을 이용하려 하는데 자꾸 에러가 납니다.
어더가 잘못 되었는지요?러
CPP=g++ OBJECTS = Stack.o CXX_DIR = ../cxxtest CXX = $(CXX_DIR)/cxxtestgen.pl CFLAGS= -Wall -g -ftest-coverage -fprofile-arcs TEST = Stacktest.h .SUFFIXES : .o .cpp .c .cpp.o : $(CPP) $(CFLAGS) -c $< all: Stack Stack: $(OBJECTS) $(CPP) $(CFLAGS) -o Stack $(OBJECTS) Stack.o: Stack.cpp $(CPP) $(CFLAGS) -c Stack.cpp Stack.h #Run the unit tests run_tests: runner ./runner # Generate the test runner runner.cpp: $(TEST) $(CXX) --error-printer $(TEST) -o runner.cpp test-coverage:run_tests gcov -b Stack.cpp clean: rm -f runner* *.o *.gcov *.gcda *.gcno
이렇게 makefile 을 작성해 보았습니다.
터미널 창에서 make 를 치면 ,
다음과 같은 error 메세지가 나타나네요
g++ -Wall -g -ftest-coverage -fprofile-arcs -c Stack.cpp Stack.h
Stack.cpp: In member function 'char SimpleStack::pop()':
Stack.cpp:34: warning: value computed is not used
g++ -Wall -g -ftest-coverage -fprofile-arcs -o Stack Stack.o
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 7 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 8 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 9 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 10 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 11 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 12 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 13 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 14 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 15 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 16 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 17 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 19 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 20 has invalid symbol index 20
/usr/lib/../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
-_-
왜 헤더를 컴파일 하시나요.....
일단 그냥 커맨드 라인에서 g++(g++ -o stack stack.cpp)로 컴파일 해보시고,
잘 된다면 그 커맨드를 Makefile내의 스크립트에서 구현하도록 해보세요...
그리고 개인적인 생각으로는....Makefile은..손수 다 짤필요는 없고,,,기존껄 가져다 고쳐쓰면 된다고 봅니다...
그런 식으로
그런 식으로 작성하실 거면... 그냥 shell script 로 하시는게 더 편합니다.
GNU make 가 제공하는 기능을 조금이라도 이용하려면.. 대강
OTL
댓글 달기