【问题标题】:Howto prepare QTCreator for linux driver & kernel development如何为 Linux 驱动程序和内核开发准备 QT Creator
【发布时间】:2011-03-24 10:28:34
【问题描述】:

我在 linux 上尝试了一些 IDE 来用 C 开发驱动程序。QtCreator 最适合我。 我需要 IDE 来实现更快的编码(代码完成、点击时跳转到函数等)。

有没有人为这种需求配置了 QTCreator。 例如。我该怎么做才能获得结构的智能?

问候 大侠。

【问题讨论】:

    标签: linux qt-creator


    【解决方案1】:

    更好的解决方案是使用“导入现有项目”导入 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 以查看内核构建使用的标准定义。

    此外,如果您使用的是交叉编译器,请照常在“构建和运行”编译器选项卡中进行设置。

    【讨论】:

      【解决方案2】:

      我也有同样的问题。 我找到了一个解决方案,如何在 Ubuntu 中准备 Qt Creator 到 linux Kernel 开发。

      准备包含路径:

      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. 创建 Makefile
      2. 在 Qt Creator 中,转到“Projects”并取消设置“Shadow build”
      3. 在“构建步骤”中删除所有项目并添加“制作”项目。在第一个字段 set make 的 make 项中,在 Makefile 的第二个字段 set 命令中。
        您还可以设置构建脚本。

      【讨论】:

        【解决方案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 文件。

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          【解决方案5】:

          另一种选择是:

          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 -&gt; Open File or Project -&gt; linux/linux.creator

          附: Source

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-10
            • 1970-01-01
            • 2017-03-02
            • 1970-01-01
            • 2020-05-08
            • 1970-01-01
            • 1970-01-01
            • 2013-09-13
            相关资源
            最近更新 更多