Настройка Netbeans / Eclipse для разработки ядра Linux - PullRequest
6 голосов
/ 01 октября 2009

Я занимаюсь разработкой ядра Linux и пытаюсь использовать Netbeans. Несмотря на заявленную поддержку проектов C на основе Make, я не могу создать полностью функциональный проект Netbeans. Это происходит несмотря на то, что Netbeans анализирует компиляцию двоичного файла ядра, который был скомпилирован с полной информацией отладки. Проблемы включают в себя:

  • файлы ошибочно исключены : некоторые файлы неправильно выделены серым цветом в проекте, что означает, что Netbeans не считает, что их следует включать в проект, хотя на самом деле они компилируются в ядро. Основная проблема заключается в том, что Netbeans пропустит любые определения, которые существуют в этих файлах, такие как структуры данных и функции, но также пропустит определения макро.
  • не может найти определения : Довольно очевидно, - зачастую Netbeans не может найти определение чего-либо. Это частично является результатом вышеуказанной проблемы.
  • не удается найти заголовочные файлы : не требует пояснений

Мне интересно, имел ли кто-нибудь успех в настройке Netbeans для разработки ядра Linux, и если да, то какие настройки они использовали. В конечном счете, я ищу, чтобы Netbeans мог либо анализировать Makefile (предпочтительно), либо извлекать отладочную информацию из двоичного файла (менее желательно, поскольку это может значительно замедлить компиляцию), и автоматически определять, какие файлы фактически скомпилированы, а какие макросы на самом деле определены. Затем, основываясь на этом, я хотел бы иметь возможность найти определения любой структуры данных, переменной, функции и т. Д. И получить полное автозаполнение.

Позвольте мне ввести этот вопрос в несколько пунктов:

  • Меня не интересуют решения с участием Vim / Emacs. Я знаю, что некоторые люди любят их, но я не один из них.
  • Как следует из названия, я также был бы рад узнать, как настроить Eclipse, чтобы делать то, что мне нужно
  • Хотя я бы предпочел идеальное освещение, но то, что пропускает только одно из миллиона определений, очевидно, прекрасно

Полезная функция «Связанные вопросы» SO сообщила мне, что связан следующий вопрос: https://stackoverflow.com/questions/149321/what-ide-would-be-good-for-linux-kernel-driver-development. После прочтения этот вопрос является скорее сравнением между IDE, тогда как я ищу, как установить до конкретной IDE. Несмотря на это, пользователь Уэйд Милинг, похоже, имеет некоторый опыт работы с Eclipse по этому виду разработки, поэтому я, безусловно, был бы признателен за его (и, конечно, за все) ваши ответы.

Приветствия

Ответы [ 6 ]

4 голосов
/ 04 октября 2009
2 голосов
/ 07 февраля 2012

Я ранее написал ответ. Теперь я придумываю все детали решения и хотел бы поделиться им. К сожалению, stackoverflow не позволяет мне редактировать предыдущий ответ. Поэтому я пишу это в этом новом ответе.

Это включает в себя несколько шагов.


[1] Первым шагом является изменение сценариев linux, чтобы оставить файлы dep. По умолчанию после использования их в сборке эти файлы dep удаляются. Эти файлы dep содержат точную информацию о зависимости, от которой зависят другие файлы. Они нужны нам для создания списка всех файлов, участвующих в сборке. Таким образом, измените файлы в linux-x.y.z / scripts, чтобы они не удаляли файлы dep следующим образом:

linux-3.1.2/scripts

Kbuild.include: echo do_not_rm1 rm -f $(depfile);
Makefile.build: echo do_not_rm2 rm -f $(depfile);

Другие шаги подробно описаны в моем файле проекта кода GitHub https://github.com/minghuascode/Nbk/blob/master/note-nbkparse. Примерно вы делаете:

[2] Сконфигурируйте свой метод конфигурации, но обязательно используйте опцию «O =», чтобы собрать файлы obj в отдельный каталог.

[3] Затем используйте ту же опцию «O =» и «V = 1» для сборки linux и сохраните make make output в файл.

[4] Запустите мой скрипт nbkparse из вышеуказанного проекта github. Оно делает: [4.1] Прочитайте файл журнала make и файлы dep. Генерация команды зеркального отображения. [4.2] Запустите команду зеркалирования, чтобы жестко связать соответствующие исходные файлы в отдельное дерево и сгенерировать файл make-log для использования NetBeans.


Теперь создайте проект NetBeans C, используя зеркальное исходное дерево и сгенерированный файл журнала. NetBeans должен иметь возможность разрешать все символы ядра. И вы увидите только файлы, участвующие в сборке.

1 голос
/ 15 августа 2012
0 голосов
/ 17 января 2012

Я нашел эту ссылку очень полезной при настройке правильной индексации в Eclipse. В моем случае требуется запустить скрипт для изменения среды Eclipse в соответствии с настройками вашего ядра

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

Иллюстрированное руководство по индексации ядра Linux в eclipse

0 голосов
/ 09 июня 2010

Я думаю, что это сработает (каждый шаг выполняется для разных проектов):

[1] Измените сценарии сборки ядра, чтобы оставить файлы .d. По умолчанию они удаляются. [2] Записать процесс сборки в файл. [3] Напишите скрипт для разбора журнала сборки. [3.1] Из журнала сборки вы знаете все файлы .c. [3.2] Из файла .c вы знаете, который является соответствующим файлом .d. [3.3] Просмотрите файлы .d, чтобы узнать все включенные файлы .h. [3.4] Сформируйте полный список файлов .c и .h. [4] Теперь создайте новый каталог и используйте «ln -s» или «ln», чтобы выбрать интересующие файлы.

Теперь создайте проект Netbeans для существующего исходного кода в [4]. Настройте помощь кода для использования файла make-log. Тебе следует увидеть Точно эффективный исходный код, как при сборке в [2].

Некоторые пояснения к вышеуказанным шагам:

В [2] выполните реальную сборку, чтобы файл журнала содержал точные файлы и интересующие вас флаги. Позднее netbeans сможет использовать точные флаги для анализа.

В [4] выберите только те файлы, которые вы хотите просмотреть. Включение всего дерева ядра в netbeans будет непрактичным.

Существует способ хитрости при разборе файлов .d: многие из зависимых элементов не являются реальными путями к файлу .h, они представляют собой измененную запись для части разделов конфигурации linux в файле автоматической конфигурации. Возможно, вам придется отменить изменение, чтобы выяснить, какой файл является настоящим заголовочным файлом.

На самом деле есть тема на сайте netbeans. Это URL для обсуждения: http://forums.netbeans.org/ntopic3075.html. И есть ссылка на вики-страницу, связанную с обсуждением: wiki.netbeans.org/CNDLinuxKernel. По сути, он просит вас сделать префикс make с CFLAGS = "- g3 -gdwarf-2".

0 голосов
/ 02 октября 2009

Я занимался разработкой встроенного Linux. Включая разработку модулей ядра и импортировав весь исходный код ядра Linux в Eclipse, как отдельный проект. Я собирал само ядро ​​вне Eclipse (пока), но у меня нет никаких причин, почему я не смогу настроить среду сборки в Eclipse для сборки ядра. Для моих проектов, пока я настраиваю свойства PATH так, чтобы они указывали на соответствующие исходные файлы linux, каталоги, было бы неплохо заканчивать имена для полей структуры и т. Д.

Я не могу комментировать, если он выбирает правильные определения и не скрывает соответствующие разделы, так как на самом деле я не обращал особого внимания на файлы в самом ядре. (Пока)

Мне также было интересно использовать Netbeans в качестве Linux-C IDE, так как я предпочитаю Netbean для разработки Java GUI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...