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

时间:2011-03-24 10:28:34

标签: linux qt-creator

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

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

问候 camelord。

5 个答案:

答案 0 :(得分:7)

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

然后只添加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&amp; Run”编译器选项卡中照常设置。

答案 1 :(得分:5)

我有同样的问题。 我找到了一个解决方案,如何在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)
    
  5. <强>建筑:

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

答案 2 :(得分:3)

我找到了答案here。要完成此任务,您需要添加

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文件。

答案 3 :(得分:0)

不允许发表评论,因此我将在此处为RedEyed的答案添加评论。我必须转义引号,否则我从find命令收到错误消息:

SOURCES += $$system(find -L $$SRC_PROJECT_PATH -type f -name \"*.c\" -o -name \"*.S\" )

答案 4 :(得分:0)

另一种选择是:

  1. 像往常一样构建 linux 内核,但输出详细:make KBUILD_VERBOSE=1 | tee build.log
  2. 使用 this repo 中的 prepare_kernel_project.py(脚本采用 build.log 并解析上一步中用于构建的文件/选项,然后创建 QtCreator 项目):
~/linux$ git clone https://github.com/TheMeaningfulEngineer/linux-in-qtcreator.git
~/linux$ cp linux-in-qtcreator/prepare_kernel_project.py .
~/linux$ chmod 755 prepare_kernel_project.py
~/linux$ ./prepare_kernel_project.py build.log linux
  1. 最后,在 QtCreator 中打开项目:File -> Open File or Project -> linux/linux.creator

附言Source