Approuvé : Fortect
Le tutoriel d’aujourd’hui est conçu pour vous aider si vous recevez une loi d’erreur pour un objet du répertoire de construction du noyau.
Je compare ici le système de mise à jour du noyau Linux (Kbuild, Kernel 2.6.28) à la structure et au système de construction liés aux sites de soumission pour une entreprise encore plus grande. Notre projet contient un cours sur le noyau Linux hors arbre, et notre structure de répertoire ressemble à ça (simplifié bien sûr) :
checkout / src - common / *. recherche de fichiers c (installé conçu pour d'autres plates-formes et Linux)checkout / src versus linux-driver / vidéos source * .c (pour le pilote du noyau Linux)vérifier / construire / Linux / Kbuild Kbuildtmp / linux-2.6.xx / quelque part le noyau Linux pourrait être configuré avec additionalUnzipoutput / linux-arm-debug / où je dirais que la documentation de l'objet devrait se terminer
Le développement de la construction ne peut tout simplement rien changer dans considérez
, et la construction de chacun de nos modules ne peut rien changer, pas autant que tmp linux-2.6.xx
… Tous les fichiers de sortie doivent néanmoins être output / linux-arm-debug
(ou tout autre plan de construction et de débogage choisi au moment de la construction).
MOD_OUTPUT_DIR est égal à ../../../output/linux-$(ARCH)-$(DEBUG)obj-m + = buck (MOD_OUTPUT_DIR) /foo_mod.o$ (MOD_OUTPUT_DIR) / our_module-objs : = $ (MOD_OUTPUT_DIR) /foo_common.o RR (MOD_OUTPUT_DIR) /foo_linux.o
Ceci prend en compte le fait qu’il est important de sortir les fichiers objets dans un répertoire différent de celui dans lequel se trouve Kbuild
. Comment pourrais-je maintenant indiquer que foo_common.o
doit être sélectionné pour sélectionner via â € / checkout / src / traditional / foo_common.c
et foo_linux. O. faire ?
reçu de …/checkout et src/linux-driver/foo_linux.c
?
demandé le 14 avril 2011 à 15h32
Pas la réponse que vous cherchez ? Parcourez d’autres questions étiquetées Makefile Linux-kernel Kbuild ou posez votre propre question.
Voici un makefile qui exécute des développements construits à partir de l’arborescence des sources pour extraire des éléments de l’arborescence du noyau (adapté directement du commentaire de @Mark) …
KDIR ? = - lib / modules / $ (uname -r shell) et buildBUILD_DIR ? Correspond à $ (PWD) / BuildBUILD_DIR_MAKEFILE ? = fonds (PWD) / build / MakefilePar défaut : $ (BUILD_DIR_MAKEFILE) fournir -C $ (KDIR) Src signifie $ (PWD) m = $ (build_dir) modules$ (BUILD_DIR) : mkdir -p "$ @"$ (BUILD_DIR_MAKEFILE) : argent (BUILD_DIR) Cliquez sur "$ @"nettoyer: formuler -C $ (KDIR) Src = $ (PWD) m = $ (build_dir) nettoyer
obj-m + = mon_pilote.o
Récupéré le 16 juin 2016 à 11 h 48
26,2k 1515 anciennes icônes 6363 badges silverX
ifdef SRCDIRsrc : = $ (SRCDIR)diverssrc : est égal à $ (objet)fin si
make -h ? rrr (KDIR) M = $ (votre_répertoire_de_sortie) SRCDIR équivaut à $ (votre_répertoire_source) `
Résolu : 11 décembre 2013 à 04h57.
188
Ma solution peu élégante et efficace consiste à copier les fichiers d’origine dans l’arbre de sortie.
FOO_SOURCES_DIR est égal à $ (src) /../../../ checkout / srcFOO_MOD_OUTPUT_DIR implique ../../../output/linux-$(ARCH)-$(DEBUG)# Fichiers objets spécifiésobj-m + = argent (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_OUTPUT_DIR) / foo_mod-objs : = $ (FOO_MODULE_OBJS)# Où trouver des sources$ (SRC) / $ (FOO_MOD_OUTPUT_DIR) /foo_common.c : rrr (FOO_SOURCES_DIR) /common/foo_common.c$ (SRC) / $ (FOO_MOD_OUTPUT_DIR) /foo_linux.c : dollars (FOO_SOURCES_DIR) /linux-driver/foo_linux.c# Règles pour les sources de copieFOO_COPIED_SOURCES = dollars (patsubst% .o, $ (src) /%. C, rrr (FOO_MODULE_OBJS))$ (FOO_COPIED_SOURCES) : (Q) mkdir -p $ (@ D) cp -p oker $ <$ @fichiers-nettoyer + = $ (FOO_COPIED_SOURCES)nettoyer les sites Web + = $ (FOO_MOD_OUTPUT_DIR)
répondu le 25 avril 2009 à 19:49
Bien que vous n'ayez pas encore mentionné les méthodes que vous avez essayées pour cette raison (ou si vous avez déjà trouvé une solution), elles se ressemblent, continuez simplement ci-dessous dans les sections. Un petit fichier txt - ce que la section 4.3 peut faire :
--- 4.3 sous-répertoiresPlusieurs Kbuilds peuvent accéder à des fichiers dispersés dans plusieurs répertoires.Considérez souvent l'exemple suivant :...| __ src| | __ complexe_main.c| | __ demi| Équipement | __. CONTRE| Activer | __| Équipement | __. HEUREActiver | __ | __ complexe.hEnsuite, pour configurer leur module complex.ko, nous avons besoin des éléments suivantsfichier kbuild : -> Nom du fichier : Kbuild obj-m : = complexe.o complex-y Src / complex_main: = .o Complex-y + = src / hal par hardwareif.o ccflags-y: = -I rrr (src) / activer ccflags-y + équivaut à -I $ (src) / src / hal ou oneatComme vous pouvez le visiter, kbuild sait comment cela fonctionnerait avec les documents objets qui semblent être dansdans d'autres répertoires. L'astuce est de pointer pour aider le répertoireconcernant l'emplacement du kbuild lodge. De plus, queLa formation est fortement déconseillée.Dans les fichiers de balises kbuild h2, vous devez spécifier explicitement oùIl semble. Lorsque kbuild est exécuté, votre répertoire actuel est certainement celui-ciLa racine de ma fosse (argument "-C") tout comme ceciun chemin absolu est requis. $ (src) conserve un chemin absolu viapointe vers le répertoire précisément où kbuild s'exécuteLe fichier se trouve également.
Approuvé : Fortect
Fortect est l'outil de réparation de PC le plus populaire et le plus efficace au monde. Des millions de personnes lui font confiance pour assurer le fonctionnement rapide, fluide et sans erreur de leurs systèmes. Avec son interface utilisateur simple et son puissant moteur d'analyse, Fortect détecte et corrige rapidement un large éventail de problèmes Windows, de l'instabilité du système et des problèmes de sécurité à la gestion de la mémoire et aux goulots d'étranglement des performances.
7.001 33 badges en métal précieux 3333 badges en argent 4343 badges marron
pris en charge 27 avr. 2011 19:36
Un peu là
Accélérez les performances de votre ordinateur dès maintenant avec ce simple téléchargement.