라이브러리라고 하면 약간 어색(?)한것 같습니다.. 꼭 userland application 같아서요..
unresolved symbol 이 나오는 가장 빈번한 이유는 올리려고 하는 module이 현재 쓰고 있는 커널의 헤더에 compile되지 않은 경우가 많습니다. 예를 들어서 쓰고 있는 커널은 mmx를 지원하지 않는 cpu로 컴파일되어 있었는데 모듈이 컴파일될때 쓴 커널헤더는 mmx를 지원하게 맞춰졌다면 mmx_memcpy 같은 심볼을 못찾을수 있습니다.
적절한 라리브러리가 링크 되 있지 않기 때문입니다~
심볼이 정의 되어있는 라이브러리를 컴파일시 추가해줘야 합니다~
심볼이 어떤 라이브러리에 정의되있는지 찾아서...
함께 컴파일 해주면 됩니다.~
라이브러리라고 하면 약간 어색(?)한것 같습니다.. 꼭 userland
라이브러리라고 하면 약간 어색(?)한것 같습니다.. 꼭 userland application 같아서요..
unresolved symbol 이 나오는 가장 빈번한 이유는 올리려고 하는 module이 현재 쓰고 있는 커널의 헤더에 compile되지 않은 경우가 많습니다. 예를 들어서 쓰고 있는 커널은 mmx를 지원하지 않는 cpu로 컴파일되어 있었는데 모듈이 컴파일될때 쓴 커널헤더는 mmx를 지원하게 맞춰졌다면 mmx_memcpy 같은 심볼을 못찾을수 있습니다.
심볼을 export 하지 않았을 경우도 unresolved symbol 자주 나오지요.
cat /proc/ksyms
모듈간의 의존성 문제때문에도 자주 나오는 것 같네요.가령 A라는
모듈간의 의존성 문제때문에도 자주 나오는 것 같네요.
가령 A라는 모듈에 a라는 심볼을 익스 포트 시켰고, B라는 모듈은 a라는 심볼을 사용한다면 A없는 상태에서 B를 로딩하는 과정에서 "난 심볼을 몰라 ~~"라는 에러를 내죠.
결과 적으로 앞 두분이 설명한 것과 같은 것인데, 모듈 프로그램 관련 문서를 읽다가 나오는 예제를 테스트 할때 당연히 되야 한다고 생각했던게 안되서 난감해 하던 이유들은 대부분 이런 문제 때문이죠.
횡설수설.
Do you think that's the air you are breathing now?
댓글 달기