Table of Contents
승인됨: ASR Pro
오늘의 튜토리얼은 커널이 디렉토리 개체를 빌드할 때 오류 코드를 수신하는 경우를 허용하도록 설계되었습니다.
더 큰 프로젝트에 대한 대부분의 제출 사이트의 구조 및 빌드 시스템에 대한 Linux 커널 업데이트 시스템(Kbuild, Kernel 2.6.28)을 평가하고 있습니다. 우리 프로젝트에는 트리 외부 Linux 커널 모듈이 포함되어 있으며 단순히 디렉토리 구조는 다음과 같습니다(물론 간단하게 수행할 수 있음).
<사전> <코드> 체크아웃 / src / 선호 / *. c 파일 검색(여러 다른 플랫폼 및 Linux에 설치됨)checkout / src / linux-driver 대 소스 비디오 * .c(Linux 커널 드라이버용)체크아웃 – 빌드 / Linux / Kbuild Kbuildtmp 및 linux-2.6.xx / Linux 커널이 추가Unzip으로 설계된 곳output / linux-arm-debug / 목표 문서가 끝나는 곳
빌드 프로세스는 단순히 체크아웃
에서 아무 것도 변경할 수 없으므로 각 모듈을 빌드하는 것은 tmp linux-2.6.xx만큼 요소를 변경할 수 없습니다. code> ... 모든 출력 파일은 항상
output / linux-arm-debug
(또는 빌드 시 선택한 디버그 계획이 있는 아키텍처)여야 합니다.
MOD_OUTPUT_DIR은 ../../../output/linux-$(ARCH)-$(DEBUG)와 같습니다.obj-m + = $ (MOD_OUTPUT_DIR) /foo_mod.o$ (MOD_OUTPUT_DIR) / our_module-objs: = $ (MOD_OUTPUT_DIR) /foo_common.o 달러 (MOD_OUTPUT_DIR) /foo_linux.o
이것은 Kbuild
가 있는 모델과 다른 디렉토리에 목표 파일을 저장하는 것이 중요하다는 사실을 고려한 것입니다. 이제 foo_common.o
가 â € / checkout / src / common 대 foo_common.c
및 foo_linux 중에서 선택되도록 어떻게 표시할 수 있습니까? O. 컴파일?
는 … / checkout / src per linux-driver / foo_linux.c
에서 얻었습니까?
2011년 4월 12일 오후 3시 32분에 요청함
찾고 있는 답변이 아닌가요? Makefile Linux-kernel Kbuild에 태그가 지정된 다른 질문을 찾아보거나 자신의 질문을 하십시오.
다음은 커널 트리의 모듈을 깨기 위해 소스 트리에서 구축된 빌드를 실행하는 makefile입니다(@Mark의 설명에서 수정) ...
<사전> <코드> KDIR? = / lib 또는 모듈 / 빌드당 $(uname -r 셸)BUILD_DIR? $ (PWD) / 빌드와 일치BUILD_DIR_MAKEFILE? = 자금(PWD) / 빌드 / Makefile기본값: $(BUILD_DIR_MAKEFILE) -C $(KDIR) Src = 달러(PWD) m = $(build_dir) 모듈 제공$ (BUILD_DIR): mkdir -p "$ @"$(BUILD_DIR_MAKEFILE): 현금(BUILD_DIR) "$ @"를 클릭하십시오.깨끗한: 공식화 -C $(KDIR) Src는 $(PWD) m = $(build_dir) clean과 같습니다. <사전> <코드> obj-m + = my_driver.o
2016년 6월 17일 오전 11시 48분에 확인함
26.2k
<사전> <코드> ifdef SRCDIRsrc: = $ (SRCDIR)다양한src: = rr(객체)종료
make -h bucks(KDIR) M = $(your_output 디렉토리) SRCDIR = Dollar(your_source_directory) `
해결됨: 2013년 12월 11일 오전 4시 57분
와 같습니다.
188 22개의 실버 배지 배지 1414 청동 배지
내 세련되지 않고 효율적인 솔루션은 소스 파일을 출력 트리에 복사하는 것입니다.
FOO_SOURCES_DIR은 $(src) /../../../checkout / src입니다.FOO_MOD_OUTPUT_DIR은 ../../../output/linux-$(ARCH)-$(DEBUG)를 의미합니다.# 지정된 오브젝트 파일obj-m + = $ (FOO_MOD_OUTPUT_DIR) /foo_mod.oFOO_MODULE_OBJS: $ (FOO_MOD_OUTPUT_DIR) /foo_common.o $ (FOO_MOD_OUTPUT_DIR) /foo_linux.o와 동일각 foo_mod-objs에 대한 $(FOO_MOD_OUTPUT_DIR): = $(FOO_MODULE_OBJS)# 출처를 찾는 곳$(SRC) / $(FOO_MOD_OUTPUT_DIR) /foo_common.c: 달러(FOO_SOURCES_DIR) /common/foo_common.c$ (SRC) / $ (FOO_MOD_OUTPUT_DIR) /foo_linux.c: rrr (FOO_SOURCES_DIR) /linux-driver/foo_linux.c# 복사 소스에 대한 규칙FOO_COPIED_SOURCES = 현금(patsubst% .o, $(src) /%. C, $(FOO_MODULE_OBJS))$ (FOO_COPIED_SOURCES): 수입 (Q) mkdir -p $ (@ D) cp -f <$ @파일 정리 + = $ (FOO_COPIED_SOURCES)깨끗한 월드 와이드 웹 디렉토리 + = $ (FOO_MOD_OUTPUT_DIR)
2011년 4월 25일 오후 7시 49분에 답변됨
훨씬 더 많이 시도한 방법을 언급하지 않았을 수도 있지만(또는 이미 솔루션을 찾은 경우) 비슷해 보일 수 있습니다. 아래 모듈에서 계속하십시오. 작은 txt 파일 - 섹션 4.3에서 할 수 있는 작업:
--- 4.3 하위 디렉토리여러 Kbuild는 여러 디렉터리에 흩어져 있는 파일에 액세스합니다.다음 예를 고려하십시오....| __ src| | __ complex_main.c| | __ 할| 장비 | __. 에 맞서| 활성화 | __| 장비 | __. 시간활성화 | __ | __ 복잡한.h그런 다음 현재 complex.ko 모듈을 구성하려면 다음 요소가 필요합니다.kbuild 파일: -> 파일명 : Kbuild obj-m: = complex.o complex-y Src / complex_main: = .o Complex-y + = src/hal/hardwareif.o ccflags-y: = -I $(src) 활성화 ccflags-y + = -I $ (src) / src / hal 및 oneat당신이 방문할 수 있듯이, kbuild는디렉토리에서. 트릭은 바로 디렉토리를 가리키는 것입니다.kbuild 파일의 위치에 대해. 게다가 그훈련은 강력하게 권장하지 않습니다.kbuild 헤더 문서에서 명시적으로 지정해야 합니다.그것은 보인다. kbuild가 실행될 때 현재 디렉토리는 다음과 같아야 합니다.예를 들어 내 구덩이의 루트(인수 "-C")절대 경로가 필요합니다. $(src)는 다음을 통해 환상적인 절대 경로를 유지합니다.kbuild가 실행되고 있는 전화번호부를 가리킵니다.파일도 있습니다.
승인됨: ASR Pro
ASR Pro은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 ASR Pro은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.

7.001 33개의 귀금속 배지 3333 은색 배지 4343 갈색 배지
2011년 4월 27일 오후 7시 36분에 답변됨
조금 거기
지금 이 간단한 다운로드로 컴퓨터 성능을 높이십시오. 년년
