openwrt编译包过程及Makefile编写

openwrt 编译包过程

0、细节

<package>

包名为Makefile所在文件夹名

1、下载包

make package/<package>/download V=99

2、准备包

make package/<name>/prepare V=99

包内.prepared_*文件是是否configure过的记录文件,删除可重新prepare

3、编译包

make package/<name>/configure V=99

包内.configured_*文件是是否configure过的记录文件,删除可重新configure

4、编译包

compile

make package/<package>/compile V=99

openwrt makefile编写

0、细节

编写Makefile(测试时可建立软连接从feeds到package/feeds里)
主包一般完全编译,子包一般都是根据配置选项,来拷贝文件到安装目录

1、包名

2、地址,git方式或者http方式

3、menuconfig选项,包名依赖

4、Build/Prepare

复制文件或解压文件、配置环境等

5、Build/Configure

配置configure:
有脚本则运行脚本

define Build/Configure
        (cd $(PKG_BUILD_DIR); ./autogen.sh)
        $(call Build/Configure/Default)
endef

无脚本无configure

define Build/Configure
        $(call Build/Configure/Default)
endef

有configure,需要配置

define Build/Configure
		$(call Build/Configure/Default,
		‘选项’)
endef

6、Build/Compile

编译包的配置

define Build/Compile
	$(MAKE) -C $(PKG_BUILD_DIR) \
		$(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include"
Endef

7、Buile/InstallDev

编译过程中需要的,主要用PKG-CONFIG

define Build/InstallDev
		$(INSTALL_DIR) $(1)/usr/{lib/pkgconfig,include/}
		$(CP) \
				$(PKG_INSTALL_DIR)/usr/lib/*.{so*,la} \
				$(1)/usr/lib/
		$(INSTALL_DATA) \
				$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \
				$(1)/usr/lib/pkgconfig/
endef

8、Package/<>/install

安装所用

define Package/libdrm-armada/install
        $(INSTALL_DIR) $(1)/usr/lib/
        $(CP) \
                $(PKG_INSTALL_DIR)/usr/lib/*.so* \
                $(1)/usr/lib/
endef

9、$(eval $(call BuildPackage,pwrtray))

构建命令

你可能感兴趣的:(openwrt编译)