目录
2.src/Makefile 这是编译自己程序的Makefile
前言
本文章是关于openwrt 下的 内核模块的添加:
当我们写完了应用程序,想当成模块添加到固件中,需要再内核源码中添加/创建应用程序文件。
一、创建目录
openwrt/package/extend/serial-spi-4g 其中serial-spi-4g extend 是我自己创建的目录
extend:存放应用程序的顶层目录
serial-spi-4g :分支目录
serial-spi-4g /src: src 文件夹存放自己的.c和.h 还有编译程序的Makefile
serial-spi-4g/Makefile:这是openwrt识别的makefile 放在顶层
上图中的文件层次已经很明确了
二、Makefile 创建编辑
注意:Makefile 的Tab对齐
1.serial-spi-4g/Makefile 创建编辑
- 代码如下(示例):
include $(TOPDIR)/rules.mk PKG_NAME:=serial-spi-4g PKG_RELEASE:=1 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk define Package/serial-spi-4g SECTION:=utils CATEGORY:=Utilities TITLE:= ........... linkeasy witch 4G SIM endef define Package/serial-spi-4g/description Serial port and module interaction SPI send data to m32f103r8t6 endef define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(CP) ./src/* $(PKG_BUILD_DIR)/ endef define Build/Configure endef define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) \ CC="$(TARGET_CC)" \ CFLAGS="$(TARGET_CFLAGS) -Wall" \ LDFLAGS="$(TARGET_LDFLAGS)" endef define Package/serial-spi-4g/install $(INSTALL_DIR) $(1)/usr/linkeasy/ $(INSTALL_BIN) $(PKG_BUILD_DIR)/serial-spi-4g $(1)/usr/linkeasy endef $(eval $(call BuildPackage,serial-spi-4g))
2.src/Makefile 这是编译自己程序的Makefile
代码如下(示例):
######################################
#
######################################
#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE := $(wildcard *.c) $(wildcard *.cpp)
OBJS := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))
#目标文件名,输入任意你想要的执行文件名
TARGET := serial-spi-4g
#compile and lib parameter
#编译参数
CC := mipsel-openwrt-linux-gcc #交叉编译工具链
LIBS :=
LDFLAGS :=
DEFINES :=
INCLUDE := -I.
CFLAGS := -g -Wall $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H
#下面的基本上不需要做任何改动了
.PHONY : everything objs clean veryclean rebuild
everything : $(TARGET)
all : $(TARGET)
objs : $(OBJS)
rebuild: veryclean everything
clean :
rm -fr *.so
rm -fr *.o
veryclean : clean
rm -fr $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)
关于Makefile 的注意点:注意Makefile 格式
Tab键的一定要用Tab对齐,不要用空格,尤其是你粘贴过去后一定会变成8个空格
三、menuconfig 菜单中勾选刚添加的内核模块
四、make V=s 编译修改的源码
注意:如果你Makefile 是直接粘贴我的历程,可能会出现 格式错误请去掉多余的空格和 Tab键的问题
如果你没有报错那么继续往下看:
编译过程会在/build_dir目录下完成
如果菜单栏勾选为 *
那么本例程的可执行文件 在/bin 下(固件烧写到板子后本例程是/usr/linkeasy 下可以修改生成位置)
菜单栏勾选为 M
需要将ipk包下载到目标板中执行opkg install *.ipk
总结
先按着我的格式来一遍,没问题了各位看官可以需改成自己的