Как подготовить QTCreator к разработке драйвера и ядра для Linux - PullRequest
10 голосов
/ 24 марта 2011

Я попробовал несколько IDE на Linux для разработки драйвера на C. QtCreator подходит мне лучше всего. Мне нужна IDE только для интеллекта (завершение кода, переход к функциям при нажатии ... и т. Д.) Для более быстрого кодирования.

Кто-нибудь настраивал QTCreator для таких нужд. Например. Что мне нужно сделать, чтобы получить Intellisence для структуры?

С уважением camelord.

Ответы [ 3 ]

7 голосов
/ 04 октября 2013

Лучшее решение - импортировать исходный код linux с помощью «Import Existing Project». Добавьте все файлы, которые требует ваш ARCH. После создания отредактируйте файл .include и удалите все перечисленные каталоги включений.

Затем просто добавьте несколько, которые использует linux.

include
arch/<ARCH>/include
arch/<ARCH>/mach-<MACH>/include
arch/<ARCH>/<PLATFORM>/include

Теперь отредактируйте .config, это лучший бит. Добавьте что-то вроде следующего.

#define __KERNEL__
#define __arm__
#define __LINUX_ARM_ARCH__ 7

#include <linux/kconfig.h>

Это #include, которое включает в себя все, что вам больше всего нужно для autoconf.

Сделайте make V = 1, чтобы увидеть, что стандарт определяет, что использует сборка ядра.

Также, если вы используете кросс-компилятор, настройте его, как обычно, на вкладке «Build & Run» Compilers.

6 голосов
/ 28 января 2015

У меня такая же проблема.Я нашел решение, как подготовить Qt Creator к разработке ядра Linux в Ubuntu.

Подготовить пути включения:

  1. Создать проект без Qt (Plan C-Project).
  2. Добавьте свои файлы в проект.
  3. Загрузите ваши linux-заголовки.В Ubuntu 14.04 sudo apt-get install linux-headers-$(uname -r)
  4. Настройка файла * .pro:

    TEMPLATE = app
    CONFIG += console
    CONFIG -= app_bundle
    CONFIG -= qt
    
    ARCH=arm64
    SRC_PROJECT_PATH = /home/user/my_LKM_project
    LINUX_HEADERS_PATH = /usr/src/linux-headers-$$system(uname -r)
    
    SOURCES += $$system(find -L $$SRC_PROJECT_PATH -type f -name "*.c" -o -name "*.S" )
    HEADERS += $$system(find -L $$SRC_PROJECT_PATH -type f -name "*.h" )
    OTHER_FILES += $$system(find -L $$SRC_PROJECT_PATH -type f -not -name "*.h" -not -name "*.c" -not -name "*.S" )
    
    INCLUDEPATH += $$system(find -L $$SRC_PROJECT_PATH -type d)
    INCLUDEPATH += $$system(find -L $$LINUX_HEADERS_PATH/include -type d)
    INCLUDEPATH += $$system(find -L $$LINUX_HEADERS_PATH/arch/$$ARCH/include -type d)
    

Здание:

  1. Create Makefile
  2. В Qt Creator перейдите в «Проекты» и отмените «Shadow build»
  3. В «Build Steps» удалите все элементы и добавьте «make»,В элементе make в первом поле установите make, во втором поле введите команду для вашего Makefile.
    Также вы можете установить свой скрипт сборки.
3 голосов
/ 16 апреля 2012

Я нашел ответ здесь .Для этого вам необходимо добавить

QMAKE_CXXFLAGS = -I/usr/src/linux-3.1.8-1-ARCH/include
QMAKE_CFLAGS = -I/usr/src/linux-3.1.8-1-ARCH/include

ко всем файлам .pro, которые используются для сборки модулей ядра.

...