-std=c99
을 사용하여 응용 프로그램 코드를 컴파일 할 때 c99 기능을 사용하는 데 익숙합니다.왜 커널 모듈을 컴파일하기 위해 c99 대신 gnu99를 사용해야합니까?
최근 몇 가지 기본 커널 모듈 예제를 따라 왔으며 ccflags-y := -std=c99
을 makefile에 추가했습니다. 그러나 내가 만들려고했을 때 17K 줄의 오류가 발생했습니다. gnu99
은 완벽하게 작동합니다.
커널 코드가 의존하는 gnu99와 c99의 차이점은 무엇입니까?
+1. 그리고 당신은 처음으로 눈치 채는 사람이 아닙니다. 참조 : http://llvm.linuxfoundation.org/ – 0xC0000022L
기본적으로 커널은 GCC 확장을 사용하며 전원이 꺼지면 컴파일되지 않습니다. –
'커널 코드가 의존하는 gnu99와 c99의 차이점은 무엇입니까? ' 나는 당신이이 차이점을 스스로 찾을 수 있다고 생각합니다. GNU C는 ISO 표준 C에없는 여러 가지 언어 기능을 제공합니다 (-pedantic 옵션은 이러한 기능 중 하나가 사용되면 경고 메시지를 출력하도록 GCC에 지시합니다). 그래서'gnu99'로 커널을 만들고'ccflags-y : = -pedantic'을 추가하십시오. 그런 다음 경고를 분석합니다. gcc의 문서에서 가져온 것입니다 : https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/C-Extensions.html#C-Extensions –