i tried a few IDEs on linux to develop driver in C. QtCreator suits best for me. I need the IDE just for the intellisence (codecompletion, jump to functions on click.. etc.)
I found answer here. To acomplish this you need to add
QMAKE_CXXFLAGS = -I/usr/src/linux-3.1.8-1-ARCH/include
QMAKE_CFLAGS = -I/usr/src/linux-3.1.8-1-ARCH/include
to all .pro files that are used for building kernel modules.
I have the same problem. I found a solution, how to prepare Qt Creator to the linux Kernel development in the Ubuntu.
Prepare include paths:
sudo apt-get install linux-headers-$(uname -r)
Configuring your *.pro file:
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)
Building:
A better solution is to import the linux source with "Import Existing Project". Add all the files your ARCH requires. Once created edit the .includes file and remove all the include dirs listed.
Then just add the few that linux uses.
include
arch/<ARCH>/include
arch/<ARCH>/mach-<MACH>/include
arch/<ARCH>/<PLATFORM>/include
Now edit .config, this is the best bit. Add something like the following.
#define __KERNEL__
#define __arm__
#define __LINUX_ARM_ARCH__ 7
#include <linux/kconfig.h>
It's the #include that brings in all of the autoconf stuff you mostly want.
Do a make V=1 to see the standard defines that the Kernel build uses.
Also if you're using a cross compiler, set up as usual in "Build & Run" Compilers tab.
I'm not allowed to comment, so I'll add a comment here to RedEyed's answer. I had to escape the quotes, otherwise I got an error message from the find command:
SOURCES += $$system(find -L $$SRC_PROJECT_PATH -type f -name \"*.c\" -o -name \"*.S\" )