반응형
<Error>
cc -Wall -Wextra -Werror -c monitoring.o routine_utils.o utils2.o init_routines.o philosopher.o utils1.o -o philo
clang: error: monitoring.o: 'linker' input unused [-Werror,-Wunused-command-line-argument]
clang: error: routine_utils.o: 'linker' input unused [-Werror,-Wunused-command-line-argument]
clang: error: utils2.o: 'linker' input unused [-Werror,-Wunused-command-line-argument]
clang: error: init_routines.o: 'linker' input unused [-Werror,-Wunused-command-line-argument]
clang: error: philosopher.o: 'linker' input unused [-Werror,-Wunused-command-line-argument]
clang: error: utils1.o: 'linker' input unused [-Werror,-Wunused-command-line-argument]
gcc -c 옵션의 의미는 뭘까?
manual에서 가져온 설명
-c
Compile or assemble the source files, but do not link. The linking stage simply is not done. The ultimate output is in the form of an object file for each source file.
By default, the object file name for a source file is made by replacing the suffix ‘.c’, ‘.i’, ‘.s’, etc., with ‘.o’.
Unrecognized input files, not requiring compilation or assembly, are ignored.
→ source 파일을 컴파일을 하되 링크하지는 않는다.
→ 기본적으로 object file 이름은 source file 이름을 .c (또는 .I .s, ...)을 .o으로 바꾸어서 만든다.
→인식이 안된 input file이나, 컴파일이 필요없거나 어셈블리 파일이라면 무시된다.
[해석]
→ 예를들어서 .c 로 끝나는 리스트를 한꺼번에 .o파일들로 compile할 때 오류가 생기지 않도록 설정할 수 있는 옵션인 것 같다. (링크해서 하나로 만들어버리지 않고 각각 컴파일 해서 .o 파일로 만드려고.)
→ 그러나 이 옵션으로 인해 $(NAME)즉 궁극적인 파일을 만들 때 (.o로 a.out을 만들 떄)는 링크가 필요한데 링크가 안되서 문제가 되는 것 같다.
-c 옵션을 %.o : %.c 만드는 명령에서만 사용하니 해결되었다.
#메모수준의 기록
반응형
'CS(computer science)' 카테고리의 다른 글
[linux 뽀개기] - perror, strerror - 명령 실행 오류 처리하기 (0) | 2023.01.04 |
---|---|
[linux 뽀개기] - tcgetattr - 터미널 정보를 저장하는 함수 , ECHOCTL (0) | 2023.01.03 |
컴퓨터네트워크 - 애플케이션 계층 (간단 맛보기) (1) | 2022.12.04 |
linux - pthread_create 매뉴얼 뜯어보기[pthread] (4) | 2022.12.01 |
ft_print 구현해보기(printf, 가변인자 이해하기) (0) | 2022.11.29 |