학술 프로젝트의 경우 kernel/
디렉토리에 exit.c
및 fork.c
과 같은 디렉토리에 소스 파일 (myfile.c)을 추가하려고합니다. myfile.c
에 정의 된 함수에 "정의되지 않은 참조"링크 오류가 발생하여 빌드 시스템이 자동으로 새 파일을 선택하는 것으로 나타나지 않습니다. 어떻게이 파일을 통합 할 수 있습니까?커널 : 커널 빌드를위한 새로운 소스 파일을 추가하는 방법은 무엇입니까?
4
A
답변
5
해당 개체 파일을 kernel/Makefile
에 추가해야합니다. 당신은 당신의 코드에 대한 구성 변수가있는 경우에, 당신은 사용한다 :
obj-$(CONFIG_ZERO_STIMULUS_FEATURE) += zerostimulus.o
당신이 구성 변수없이 코드를 작성하는 경우, 당신은 단지 obj-y
변수에 추가 할 것입니다 :
obj-y += zerostimulus.o
구성 변수가 내장되어 있거나 모듈로 구축되었거나 꺼져있는 경우 구성 변수가 y
, m
또는 n
으로 확장됩니다. 그런 다음 obj-y
, obj-m
변수가 작성됩니다.
2
맞아요!
그냥 부록 : 커널을 구축하기 전에 실행 "make menuconfig
"당신이 (빌드 인 것로드 가능한 모듈로 사용됩니다 커널 이미지 (Y), 어떤 기능 m를 설정할 수 있다는 사실을 알고) 활성화되지 않을 것입니다 (n).
새 기능으로 설정할 수 있도록하려면 새 파일의 같은 폴더에있는 Kconfig 파일을 편집하면됩니다. 여기에 "CONFIG_
"
config ZERO_STIMULUS_FEATURE
tristate "My new feature"
default m
---help---
This is my brand new feature
Here's a multi-line description
일반적인 실수는 대신 "config ZERO_STIMULUS_FEATURE
"의 "config CONFIG_ZERO_STIMULUS_FEATURE
"을 설정하는 것입니다 : 귀하의 경우에는 "linux-x.y.z/kernel/Kconfig
는"
이 예입니다
기능을 모듈로로드 할 수없는 경우 "tristate
"대신 "bool
"키워드를 사용해야합니다. 다른 Kconfig 파일을 살펴보면 종속성을 설정하는 것이 얼마나 쉬운 지 알 수 있습니다.
감사합니다. /Angel
관련 문제
- 1. 는 리눅스 커널 소스
- 2. 커널 공간에서 패킷에 데이터를 추가하는 방법은 무엇입니까?
- 3. 커널 소스 : 패치 제출
- 4. 단일 커널 파일을 컴파일하십시오.
- 5. RHEL6 커널 코드 받기
- 6. 리눅스. 커널 소스 코드의 munlockall()
- 7. 리눅스에서의 커널 소스 코드 위치
- 8. 리눅스 커널 소스 코드 다운로드
- 9. LinSched 2.6.35 커널 용 소스
- 10. 소스 Linux 커널 모듈을 닫으시겠습니까?
- 11. Android 4.0 커널 소스 코드?
- 12. 커널 리눅스에서 곱셈을하는 방법은 무엇입니까?
- 13. 리눅스 커널 소스 코드에서 ">> ="의미는 무엇입니까? 리눅스 커널 소스 코드에서
- 14. 커널 구성
- 15. 커널 모듈
- 16. 커널 작업간에 데이터를 공유하는 방법은 무엇입니까? (커널/커널 태스크가있는 게임 엔진)
- 17. Android 소스 코드에서 Bluez 커널 로그 사용
- 18. 여러 소스 파일에서 커널 모듈 빌드
- 19. 새로운 소스에 대해 커널 모듈을 컴파일하는 방법
- 20. 소스 파일이 많은 외부 커널 모듈 컴파일
- 21. 커널 menuconfig에 EXPERT가 무엇입니까
- 22. 커널 모듈에서 udev를 지원하는 방법은 무엇입니까?
- 23. 커널 읽기/
- 24. CUDA 커널 사용
- 25. Zlib 커널 모듈
- 26. 커널 섹션 불일치 란 무엇입니까?
- 27. 새로운 구성 리눅스에서 커널 크래시 구성
- 28. CUDA 커널
- 29. TCP 커널 구현
- 30. 병렬 빌드를위한 pdb 파일을 생성하는 방법은 무엇입니까?