7
votes

Mise en place de NetBeans / Eclipse pour le développement du noyau Linux

Je fais du développement du noyau Linux et j'essaie d'utiliser Netbeans. En dépit de la prise en charge déclarée pour les projets C apportés sur C, je ne peux pas créer de projet NetBeans entièrement fonctionnel. C'est malgré la compilation de NetBeans analysez un binaire du noyau compilé avec des informations de débogage complètes. Les problèmes incluent:

  • Les fichiers sont exclus à tort : certains fichiers sont mal grisés dans le projet, ce qui signifie que Netbeans ne croit pas qu'ils devraient être inclus dans le projet, lorsqu'ils sont compilés dans le noyau. Le principal problème est que NetBeans manquera toutes les définitions existantes dans ces fichiers, telles que des structures de données et des fonctions, mais manquent également les définitions de macro.
  • ne peut pas trouver de définitions : assez explicités auto-explicatives - souvent les Netbeans ne peuvent pas trouver la définition de quelque chose. Ceci est en partie résultant du problème ci-dessus.
  • ne peut pas trouver des fichiers d'en-tête : auto-explicatif

    Je me demande si quelqu'un a eu du succès avec la mise en place de Netbeans pour le développement du noyau Linux et, dans l'affirmative, quels paramètres ils ont utilisé. En fin de compte, je recherche des NetBeans pour pouvoir analyser le Makefile (préféré) ou extraire les informations de débogage du binaire (moins souhaitable, car cela peut ralentir de manière significative la compilation) et déterminer automatiquement les fichiers réellement compilés et lesquels Les macros sont en fait définis. Ensuite, en fonction de cela, je voudrais pouvoir trouver les définitions de toute structure de données, variable, fonction, etc. et avoir une achèvement automatique complète.

    Permettez-moi de préférer cette question avec quelques points:

    • Je ne suis pas intéressé par des solutions impliquant Vim / Emacs. Je connais des gens comme eux, mais je ne suis pas l'un d'entre eux.
    • Comme le titre suggère, je serais également heureux de savoir comment configurer Eclipse pour faire ce dont j'ai besoin
    • pendant que je préférerais une couverture parfaite, quelque chose qui ne manque que l'un sur un million de définitions est évidemment bien

      La fonctionnalité "questions relatives" de SO SO SO SO SO est informée que la question suivante est liée: https://stackoverflow.com/questions/149321/what-ide-would-be-go-for-linux-kernel-Driver-Développement . En lisant cela, la question est plus une comparaison entre IDE's's, alors que je cherche comment configurer une IDE particulière. Même de manière à ce que l'utilisateur achète le repas semble avoir une certaine expertise pour travailler avec Eclipse sur ce type de développement, alors j'apprécierais certainement son (et bien sûr toutes vos) réponses.

      acclamations


0 commentaires

6 Réponses :


0
votes

J'ai fait du développement de Linux intégré. Y compris le développement du module de noyau et ont importé l'intégralité du code source du noyau Linux dans Eclipse, en tant que projet distinct. J'ai construit le noyau lui-même en dehors de Eclipse (jusqu'à présent), mais je ne suis pas une raison pour laquelle je ne devrais pas pouvoir configurer l'environnement de construction dans l'éclipse pour construire le noyau. Pour mes projets, tant que je configurais les propriétés du chemin pour pointer vers la source Linux appropriée, citons les répertoires, il semble être plutôt bon à propos de l'achèvement du nom pour les champs de structure, etc.

Je ne peux pas vraiment commenter, sur s'il s'agit de la prise de définition correcte et de ne pas griser les sections correspondantes, car je n'ai pas vraiment accordé à beaucoup d'attention aux fichiers du noyau lui-même. (Jusqu'ici) < / p>

Je m'interroge également sur l'utilisation de NetBeans comme Ide Linux 'C', comme je préfère les Netbeans pour le développement de l'interface graphique Java.


0 commentaires


0
votes

Je pense que cela fonctionnerait (fait chaque étape pour divers projets):

[1] Modifier les scripts de compilation du noyau pour laisser des fichiers .d. Par défaut, ils sont supprimés. [2] Connexion le processus de construction d'un fichier. [3] Ecrire un script pour analyser le journal de construction. [3.1] à partir du journal de construction, vous savez tous les fichiers .c. [3.2] A partir du fichier .c, vous savez qui est le fichier .d correspondant. [3.3] Regardez dans les fichiers .d pour trouver tous les fichiers .h inclus. [3.4] Formulaire .c complet et la liste des fichiers .h. [4] Maintenant, créez un nouveau répertoire, et utiliser « ln -s » ou « Dans » pour choisir des dossiers d'intérêt.

Maintenant, créez un projet Netbeans pour le code source existant dans le [4]. Configurer l'aide de code pour utiliser le fichier make-log. Tu devrais voir exactement le code source efficace que lorsque vous construisez à [2].

Quelques explications aux étapes ci-dessus:

[2], faire une vraie construction de sorte que le fichier journal contient les fichiers exacts et des drapeaux d'intérêt. Plus tard NetBeans seront en mesure d'utiliser les drapeaux exacts à analyser.

[4], choisissez uniquement les fichiers que vous voulez voir. L'intégration de l'ensemble arbre du noyau dans NetBeans sera peu pratique.

Il y a une astuce pour l'analyse des fichiers .d: La plupart des articles ne sont pas dépendu des chemins réels dans un fichier .h, ils sont une entrée modifiée pour une partie des sections de configuration de Linux dans le fichier de configuration automatique. Vous devrez peut-être inverser la modification de savoir qui est le vrai fichier d'en-tête.

En fait, il y a un sujet sur le site NetBeans. Ceci est l'URL de discussion: http://forums.netbeans.org/ntopic3075.html . Et il y a une page wiki liée de la discussion: wiki.netbeans.org/CNDLinuxKernel. Fondamentalement, il vous demande de faire préfixe avec CFLAGS = « - g3 -gdwarf-2 ».


3 commentaires

Merci pour vos conseils. J'ai essayé quelque chose de similaire avec des fichiers make-journal, mais à la fin, il a toujours exposé les mêmes problèmes. Et utiliser ces CFLAGS que vous avez spécifiés serait un pita parce qu'il augmente beaucoup le temps de compilation.


Cela devrait fonctionner en fonction de l'expérience passée. Va essayer d'essayer. Bien que certains symboles manquent parfois et apparaissent à nouveau, c'est un problème interne purement un NetBeans.


ici J'ai créé un script pour générer le fichier make-journal adapté à NetBeans à lire et à interpréter à partir de la production de rendement et des fichiers de DEP. Oui, vous devez modifier Linux Makefiles pour laisser les fichiers dep. Cela fonctionne très bien pour moi (presque aucun symbole manquant). Les étapes sont un peu longues mais une fois que vous l'avez fait une fois que tout sera simple. Souhaite cette aide.



0
votes

J'ai trouvé ce lien très utile pour mettre en place une indexation appropriée dans Eclipse. Il nécessite d'exécuter un script pour modifier l'environnement Eclipse pour correspondre à vos options de noyau, dans mon cas

$ autoconf-a-eclipse.py ./include/generated/autoconf.h.

Un guide illustré pour indexer le noyau Linux dans Eclipse


0 commentaires

2
votes

J'ai précédemment écrit une réponse. Maintenant, je propose tous les détails de la solution et je voudrais le partager. Malheureusement, Stackoverflow ne me permet pas de modifier la réponse précédente. Donc, je l'ai écrit dans cette nouvelle réponse.

Cela implique quelques étapes.


[1] La première étape consiste à modifier les scripts Linux pour laisser des fichiers DEP dans. Par défaut après les utiliser dans la version, ces fichiers DEP sont supprimés. Ces fichiers de DEP contiennent des informations exactes de dépendance sur lesquelles d'autres fichiers A dépend. Nous avons besoin d'eux pour créer une liste de tous les fichiers impliqués dans une construction. Ainsi, modifier des fichiers sous Linux-xyz / scripts pour ne pas supprimer les fichiers DEP tels que celui-ci: xxx


Les autres étapes sont détaillées dans mon projet de code Github fichier https://github.com/minghuascode/nbk/blob/master/Note- nbkparse . À peu près, vous faites:

[2] Configurez avec votre méthode de configuration, mais assurez-vous d'utiliser l'option "O =" pour créer les fichiers Obj dans un répertoire distinct.

[3] Utilisez ensuite la même option "O =" et "V = 1" pour créer Linux, puis enregistrer une sortie dans un fichier.

[4] Exécutez mon script NBKPARSE à partir du projet GitHub ci-dessus. Cela fait: [4.1] Lisez dans le fichier de journal de marque et les fichiers DEP. Générer une commande miroir. [4.2] Exécutez la commande de mise en miroir pour relier des fichiers source pertinents dans une arborescence distincte et générer un fichier de journal pour NetBeans à utiliser.


Créez maintenant un projet NetBeans C à l'aide de l'arborescence source en miroir et du fichier journal généré. NetBeans devrait pouvoir résoudre tous les symboles du noyau. Et vous ne verrez que les fichiers impliqués dans la construction.


0 commentaires

1
votes

0 commentaires