컴파일시 gcc 버전을 어떻게 선택하는지 물어보려고 글을 썼습니다. 내 컴퓨터에는 여러 버전의 gcc가 설치되어 있다고 생각됩니다. "gcc -v" 명령은 "gcc 버전 6.4.0(GCC)"를 반환하는 반면 "cc" 명령은 "gcc 버전 4.4.7 20120313(Red Hat 4.4.7-18)(GCC)"을 반환하기 때문입니다. "cc"가 실제로 gcc 컴파일러에 연결되어 있다는 것을 알고 있습니다. makefile에서 'CC ?= gcc'는 cc를 gcc에 연결하는 명령이어야 합니다.
그렇다면 이것은 내가 항상 gcc 4.4.7로 컴파일한다는 뜻인가요? 최신 gcc 버전에 연결하려면 cc 또는 makefile을 어떻게 변경해야 합니까? 그런데 "sudo" 명령을 사용할 권한이 없습니다.
편집: 답장을 보내주셔서 감사합니다. -a cc 유형의 출력은 'cc is /usr/bin/cc'이고 다른 출력은 'gcc is /util/bin/gcc gcc is /usr/bin/gcc'입니다. 위 경로는 gcc 6.4이고 아래 경로는 One은 이전 버전입니다.
답변1
CC
당신의 makefile
것은 단지 변수일 뿐입니다. 시스템에서 컴파일러나 실행 파일을 지정할 수 있습니다.
"새" gcc에 대한 직접 경로를 찾아 위에 놓으면 CC={Path}
정상적으로 컴파일됩니다.
답변2
선
CC ?= gcc
Makefile에서 의미하는 것은 "변수가 CC
아직 설정되지 않은 경우 변수를 설정하십시오 gcc
"입니다.
나중에 Makefile에서 CC
변수에 나열된 컴파일러는 C 언어 파일을 컴파일하는 데 사용됩니다( CC
C 컴파일러의 표준 변수입니다).
gcc
이것이 사용하려는 컴파일러라면 아무것도 변경할 필요가 없습니다 .
clang
예를 들어 다른 컴파일러를 사용 하거나 gcc-7
완전히 다른 것을 사용 하려면 다음을 수행하십시오.아니요Makefile을 변경해야 합니다. 대신에 그냥 말해 보세요
make CC=clang
명령줄에서( clang
컴파일러 실행 파일 이름일 수도 있고 자체에서 사용할 수 없는 경우 전체 경로일 수도 있음 $PATH
)
사용하려면 ccache
(a"컴파일러 캐시")예를 들어 clang
,
make CC='ccache clang'
Makefile은 CC
변수를 로 설정하기 전에 해당 변수가 설정되었는지 여부를 테스트하므로 gcc
위의 방법은 make
다양한 컴파일러 호출을 사용하는 가장 좋은 방법입니다. 무조건 값을 설정한다면 CC
Makefile을 수정해야 합니다.