Module.symvers
-
디바이스 드라이버 / 커널 소스가 필요한 이유Linux/Linux Device Driver 2020. 9. 1. 12:36
타깃 보드에 이미 리눅스 커널이 올려져 있는데 디바이스 드라이버 코드를 컴파일하기 위해서는 커널 소스가 따로 필요하다.?? 뭔 소리일까? 디바이스 드라이버는 커널 영역에 적재되어 동작하기 때문에 커널 영역에 있는 커널 함수(일반 함수, 매크로 함수, 인라인 함수)로 구성된다. 일반 함수를 사용할 경우 분기하여 동작하므로 커널 영역의 어느 위치에 해당 일반 함수가 있는지 알아야 한다. 그래서 커널 소스를 다운로드하고 빌드하면 심볼 테이블인 Module.symvers파일이 나오는데 이 위치 정보 파일을 참조하여 컴파일한다.(그럼 System.map은 뭐할 때 사용할까??.. /proc/kallsyms도 주소가 나오는 거 같은데;;???) 매크로 함수와 인라인 함수는 일반 함수와 다르게 컴파일 시 치환된다. ..