有没有办法使用premake来构建linux内核模块?

时间:2016-03-03 16:45:17

标签: linux premake

我正在尝试在使用premake5生成Makefile的大型项目的一部分中构建内核模块。但是,没有关于使用premake构建内核模块的文档。这在预制中是否可行?如果可能的话,我想在项目中使用Premake保持一致。

提前感谢您的任何见解。

到目前为止我的尝试:

project "mymod"
    kind "ConsoleApp"
    language "C"
    location "./"
    files { "**.h", "**.c" }

    if _ACTION == "clean" then
        os.rmdir("obj")
    end

    buildcommands {
      "make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules %{cfg.buildcfg}"
   }

   rebuildcommands {
      "make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules %{cfg.buildcfg} rebuild"
   }

   cleancommands {
      "make clean %{cfg.buildcfg}"
   }

    buildoptions{ "-Wno-unused-value", "-Wno-sign-compare", 
        "-Wno-unused-parameter", "-Wno-unused-function",
        "-Wno-missing-field-initializers"}


    configuration {"Release"}
        defines { "NDEBUG" }
        flags { "Optimize", "ExtraWarnings", "FatalWarnings", "FloatStrict", "EnableSSE2" }

以下是用于构建内核模块的工作Makefile的示例。当然,它很短,可能看起来不值得使用Premake,但这是因为它缺少列表中的几个目标文件,目前必须手动输入。

# Note that multiple KBUILD_EXTRA_SYMBOLS Entries are space-separated
KBUILD_EXTRA_SYMBOLS=$(ETHERCAT_TOPDIR)/Module.symvers \
    $(HOME_DIR)/shmdrv/Module.symvers \

# the output kernel module
obj-m := corert.o

# the object files used

corert-objs := ctsrt_main.o globals.o ProcessMain.o \
    CtsSharedData.o ProcessData.o   \
    ProcessSdo.o ProcessSimulate.o \
    FsmWrite.o


ETHERCAT_TOPDIR = /usr/local/src/ethercat
EXTRA_CFLAGS = -I$(ETHERCAT_TOPDIR)/include -ffast-math -mhard-float

all:


    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) \
        modules 

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

0 个答案:

没有答案