승인됨: Fortect
오늘의 튜토리얼은 커널이 디렉토리 개체를 빌드할 때 오류 코드를 수신하는 경우를 허용하도록 설계되었습니다.
더 큰 프로젝트에 대한 대부분의 제출 사이트의 구조 및 빌드 시스템에 대한 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가 실행되고 있는 전화번호부를 가리킵니다.파일도 있습니다.
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.
7.001 33개의 귀금속 배지 3333 은색 배지 4343 갈색 배지
2011년 4월 27일 오후 7시 36분에 답변됨
조금 거기
지금 이 간단한 다운로드로 컴퓨터 성능을 높이십시오. 년년