如何为Linux驱动程序和内核开发准备QTCreator

cam*_*ord 10 linux qt-creator

我在linux上尝试了几个IDE来开发C.驱动程序.QtCreator最适合我.我需要IDE只是为了intellisence(代码完成,跳转到函数点击...等),以便更快地编码.

是否有人为此类需求配置了QTCreator.例如,我需要做什么来获得结构的智能?

尊敬的是大家.

小智 7

更好的解决方案是使用"导入现有项目"导入linux源代码.添加ARCH所需的所有文件.创建后,编辑.includes文件并删除列出的所有包含目录.

然后只需添加linux使用的少数几个.

include
arch/<ARCH>/include
arch/<ARCH>/mach-<MACH>/include
arch/<ARCH>/<PLATFORM>/include
Run Code Online (Sandbox Code Playgroud)

现在编辑.config,这是最好的位.添加如下内容.

#define __KERNEL__
#define __arm__
#define __LINUX_ARM_ARCH__ 7

#include <linux/kconfig.h>
Run Code Online (Sandbox Code Playgroud)

这是#include带来了你最想要的所有autoconf内容.

做一个make V = 1来看看内核构建使用的标准定义.

此外,如果您使用的是交叉编译器,请在"构建并运行"编译器选项卡中照常设置.


Red*_*yed 6

我也有同样的问题.我找到了一个解决方案,如何在Ubuntu中为Linux内核开发准备Qt Creator.

准备包含路径:

  1. 创建非Qt项目(Plan C-Project).
  2. 将您的文件添加到项目中.
  3. 下载你的linux-headers.在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)
    
    Run Code Online (Sandbox Code Playgroud)

建造:

  1. 创建Makefile
  2. 在Qt Creator中转到"Projects"并取消设置"Shadow build"
  3. 在"构建步骤"中删除所有项目并添加"make"项.在第一个字段中的make项目中,在Makefile的第二个字段集命令中设置make.
    您也可以设置构建脚本.


Kar*_*ory 3

我在这里找到了答案。要完成此操作,您需要添加

QMAKE_CXXFLAGS = -I/usr/src/linux-3.1.8-1-ARCH/include
QMAKE_CFLAGS = -I/usr/src/linux-3.1.8-1-ARCH/include
Run Code Online (Sandbox Code Playgroud)

用于构建内核模块的所有 .pro 文件。