Aprobado: Fortect
El tutorial de hoy está diseñado para ayudarte si recibes un código de error para algún objeto del directorio de compilación del kernel.
Por lo general, estoy comparando el sistema de actualización del kernel de Linux (Kbuild, Kernel 2.6.28) para que usted pueda estructurar y construir el sistema de los sitios de división para un proyecto aún mayor. Nuestro programa contiene un módulo de kernel de Linux fuera del árbol, y nuestra estructura de directorio individual se ve así (simplificado por supuesto):
checkout / src / common versus *. búsqueda de archivos c (instalado para otras redes y Linux)checkout / src / linux-driver / root of the cause videos * .c (para el controlador del kernel de Linux)pago y compilación / Linux / Kbuild Kbuildtmp linux-2.6.xx / en algún lugar donde el kernel de Linux esté configurado debido a un desbloqueo adicionalsalida / linux-arm-debug / donde deben terminar los documentos del objeto
El proceso de compilación simplemente no puede cambiar nada en checkout
, y la generación de cada uno de nuestros módulos no puede cambiar nada, y nunca tanto como tmp / linux-2.6.xx
… Todos los archivos de salida deben ser result / linux-arm-debug
(o cualquier arquitectura y también el plan de depuración elegido en el momento de la compilación).
MOD_OUTPUT_DIR es igual a ../../../output/linux-$(ARCH)-$(DEBUG)obj-m + = $ (MOD_OUTPUT_DIR) /foo_mod.o$ (MOD_OUTPUT_DIR) o nuestro_módulo-objs: = $ (MOD_OUTPUT_DIR) /foo_common.o rr (MOD_OUTPUT_DIR) /foo_linux.o
Esto tiene en cuenta el detalle de que es importante almacenar los archivos de información del objeto en un directorio diferente de aquel dentro del cual se encuentra Kbuild
. ¿Cómo podría muy bien indicar ahora que foo_common.o
tiene que ser seleccionado para seleccionar de â € - checkout / src / common para cada foo_common.c
y foo_linux. O. compilar?
se envió desde … / checkout / src - linux-driver / foo_linux.c
?
solicitado el 14 de abril del año pasado a las 3:32 pm
¿No es la respuesta que busca? Explore otras preguntas con la etiqueta Makefile Linux-kernel Kbuild o haga su propia pregunta.
Aquí hay un archivo MAKE que ejecuta compilaciones creadas debido al árbol de fuentes para dividir los módulos relacionados con el árbol del kernel (adaptado del comentario de @ Mark) …
KDIR? = / lib / themes / $ (uname -r shell) / buildBUILD_DIR? Coincide con $ (PWD) / BuildBUILD_DIR_MAKEFILE? = $ (PWD) - compilar / MakefilePredeterminado: $ (BUILD_DIR_MAKEFILE) proporcionarle módulos -C $ (KDIR) Src = dólares (PWD) m = $ (build_dir)$ (BUILD_DIR): mkdir -p "$ @"$ (BUILD_DIR_MAKEFILE): dólares (BUILD_DIR) Haga clic en "$ @"limpio: formular -C $ (KDIR) Src = ingresos (PWD) m = $ (build_dir) limpio
obj-m + = my_driver.o
Consultado el 16 de junio de 2016 a las 11:48 a. M.
26,2k
ifdef SRCDIRsrc: = $ (SRCDIR)variossrc: = rrr (objeto)terminara si
make -h $ (KDIR) M = $ (su_directorio_de_salida) SRCDIR = rr (su_directorio_origen) `
Resuelto: 11 de diciembre de 2013 4:57 am.
188 22 insignias de plata 1414 insignias de bronce
Mi solución poco elegante y energética es copiar los archivos fuente para poderlos en el árbol de salida.
FOO_SOURCES_DIR es igual a rr (src) /../../../ checkout / srcFOO_MOD_OUTPUT_DIR = ../../../output/linux-$(ARCH)-$(DEBUG)# Archivos de objeto especificadosobj-m + = $ (FOO_MOD_OUTPUT_DIR) /foo_mod.oFOO_MODULE_OBJS: equivale a $ (FOO_MOD_OUTPUT_DIR) /foo_common.o $ (FOO_MOD_OUTPUT_DIR) /foo_linux.o$ (FOO_MOD_OUTPUT_DIR) o foo_mod-objs: = $ (FOO_MODULE_OBJS)# Dónde ir a las fuentes$ (SRC) / $ (FOO_MOD_OUTPUT_DIR) /foo_common.c: $ (FOO_SOURCES_DIR) /common/foo_common.c$ (SRC) / $ (FOO_MOD_OUTPUT_DIR) /foo_linux.c: $ (FOO_SOURCES_DIR) /linux-driver/foo_linux.c# Reglas para fuentes de copiaFOO_COPIED_SOURCES = $ (patsubst% .i, $ (src) /%. C, $ (FOO_MODULE_OBJS))$ (FOO_COPIED_SOURCES): dólar (Q) mkdir -p $ (@ D) cp -f rrr <$ @archivos-limpiar + = $ (FOO_COPIED_SOURCES)limpiar directorios + equivale a $ (FOO_MOD_OUTPUT_DIR)
respondido el 25 de abril de 2011 a las 7:49 pm
Si bien no mencionó los métodos que ha probado de esa manera (o si ya ha encontrado una solución), se vislumbran similares, simplemente continúe a continuación en los módulos. Un archivo txt trivial: lo que puede crear la Sección 4.3:
--- 4.3 subdirectoriosVarios Kbuilds pueden obtener acceso a archivos dispersos en varios directorios.Considere el ejemplo importante:...| __ src| | __ complex_main.c| | __ hal| Equipo __. CONTRA| Habilitar | __| Equipo __. HORAHabilitar | __ | __ complex.hLuego, para configurar el componente complex.ko, necesitamos los siguientes elementosarchivo kbuild: -> Nombre de archivo: Kbuild obj-m: = complejo.o complejo-y Src / complex_main: = .o Complejo-y + = src / hal / hardwareif.o ccflags-y: = -I $ (src) versus habilitar ccflags-y + = -I (src) / src / hal / oneatComo puede visitar, kbuild sabe cómo trabajar con los documentos objeto que se encuentran enen otros directorios web. El truco es apuntar al directorio de unoscon respecto a la ubicación del archivo kbuild. Además, esoSe desaconseja encarecidamente la formación.En los archivos de encabezado de kbuild, su corporación debe especificar explícitamente dóndeParece. Cuando kbuild se ejecuta mucho, su directorio actual es siempre esteLa causa original de mi pozo (argumento "-C") asíse requiere una ruta sin procesar. $ (src) mantiene una ruta completa a través deapunta a la agenda donde también se está ejecutando kbuildTambién se encuentra el archivo.
Aprobado: Fortect
Fortect es la herramienta de reparación de PC más popular y eficaz del mundo. Millones de personas confían en él para mantener sus sistemas funcionando de forma rápida, fluida y sin errores. Con su sencilla interfaz de usuario y su potente motor de análisis, Fortect encuentra y soluciona rápidamente una amplia variedad de problemas de Windows, desde la inestabilidad del sistema y los problemas de seguridad hasta la gestión de la memoria y los cuellos de botella en el rendimiento.
7.001 33 insignias de metales preciosos 3333 insignias de plata
Respondido el 35 de abril de 2011 a las 7:36 pm
Un poco ahí
Acelere el rendimiento de su computadora ahora con esta simple descarga.