-
[Makefile] make: *** [test] Error 142seoul 2021. 5. 25. 13:46
make: *** [test] Error 1
에러가 아니라 Makefile로 방금 실행시킨 파일이 0이 아닌 1로 끝났음을 알려주는 메세지임.
만약 코드를 수정해서 127을 반환하도록 하면 make: *** [test] error 127를 출력함.
//Makefile 예시//
NAME = philo_one CC = gcc CFLAGS = -Wall -Werror -Wextra SRCS = main.c OBJS = $(SRCS:.c=.o) all: $(NAME) $(NAME): $(OBJS) %.o:%.c $(CC) $(CFLAGS) -o $(NAME) main.c -lpthread clean: @rm -rf *.o fclean: clean @rm philo_one re: fclean all test: re ./$(NAME) .PHONY: all clean fclean re test
main.c 예시
#include <stdio.h> #include <stdlib.h> #include <pthread.h> #define INVALID_ARGC 1 int is_invalid_argc(int argc) { if (argc == 5 || argc == 6) return (0); return (1); } void print_err_msg(int err_number) { if (err_number == INVALID_ARGC) printf("[ Invalid argc ]\n"); } int main(int argc, char **argv) { if (is_invalid_argc(argc)) { print_err_msg(INVALID_ARGC); return (127); } printf("argv is %s\n", argv[0]); return (0); }
설명
`[foo] Error NN'
`[foo] signal description'
이런 에러들은 실제로 make 에러들이 전혀 아니다. 그들은 make 가 명령 스크립트의 일부로써 호출한 프로그램이, make 가 실패로 해석하는 0이 아닌 에러 코드 (`Error NN') 를 리턴하거나 다른 이상한 스타일로(어떤 종류의 시그널과 함께) 종료하였다는 것을 의미한다. *** 가 메시지에 붙어 있지 않으면 서브프로세스가 실패했지만 makefile 의 그 규칙이 특수 문자 - 를 앞에 달고 있어서 make 가 그 에러를 무시한 것이다.'42seoul' 카테고리의 다른 글
[Philosophers] Bonus part 함수 공부 (sem) (0) 2021.06.14 [Philosophers] 필로소퍼 70시간만에 끝내기(2)-첫번째 문제 파악하기 (0) 2021.05.21 [Philosophers] 필로소퍼 70시간만에 끝내기(1)-과제파악하기 (0) 2021.05.18 [libasm] 어셈블리 (about 1 week) - 2일차(ft_strlen, ft_strcmp) (0) 2021.05.06 [libasm] 어셈블리 (about 1 week) - 2일차(ft_write, ft_read) (0) 2021.05.06