2009-09-30 3 views
6

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

  • файлы ошибочно исключены: Некоторые файлы неправильно неактивны в проекте, а это значит, 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. Несмотря на это, пользователь Wade Mealing, похоже, имеет опыт работы с Eclipse в этом развитии, поэтому я, безусловно, буду благодарен за его (и, конечно же, все ваши) ответы.

Cheers

ответ

0

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

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

Мне также интересно было об использовании Netbeans в качестве IDE linux 'C', так как я предпочитаю разработку Netbean для разработки графического интерфейса Java.

0

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

[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, связанная с обсуждением: wiki.netbeans.org/CNDLinuxKernel. В основном он запрашивает у вас префикс make с CFLAGS = "- g3 -gdwarf-2".

+0

Спасибо за ваши советы. Я пробовал что-то подобное с файлами make-log, но, в конце концов, он все же обнаружил те же проблемы. И используя эти CFLAGS, которые вы указали, будет PITA, потому что он увеличивает время компиляции на много. –

+0

Он должен работать на основе прошлого опыта. Попробует. Хотя некоторые символы иногда отсутствуют и появляются снова, что является чисто внутренней проблемой Netbeans. – Minghua

+0

[Здесь] (https://github.com/minghuascode/Nbk/blob/master/note-nbkparse) Я создал сценарий для создания файла make-log, подходящего для NetBeans, для чтения и интерпретации с вывода make и деления файлы. Да, вам нужно изменить make-файлы linux, чтобы оставить файлы депо. Он отлично работает для меня (почти без пропущенных символов). Шаги немного длинны, но как только вы это сделали, все будет просто. Пожелайте эту помощь. – minghua

0

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

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

An illustrated guide to indexing the linux kernel in eclipse

2

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

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


[1] Первый шаг заключается в модификации Linux скрипты, чтобы оставить DEP файлы. По умолчанию после использования их в сборке, эти DEP файлы удаляются. Эти файлы dep содержат точную информацию о зависимости, от которой зависят файлы других файлов. Нам нужны они, чтобы создать список всех файлов, участвующих в сборке. Таким образом, изменение файлов под Linux-x.y.z/скрипты, чтобы сделать их не удалить 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 и сохраните вывод в файл.

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


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