快捷搜索: 王者荣耀 脱发

buildroot添加HOST端工具

以zlog为例,假设我们需要在host添加编译一个zlog库。

    首先,在package/zlog/下面新增一个Config.in.host文件,对应命名都比Config.in多一个host字段:
diff --git a/package/zlog/Config.in.host b/package/zlog/Config.in.host
new file mode 100644
index 00000000..0191c92f
--- /dev/null
+++ b/package/zlog/Config.in.host
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_HOST_ZLOG
+       bool "host zlog"
+       depends on BR2_TOOLCHAIN_HAS_THREADS
+       depends on !BR2_STATIC_LIBS
+       help
+         zlog is a reliable, high-performance, thread safe, flexible,
+         clear-model, pure C logging library.
+
+         https://github.com/HardySimpson/zlog
+
+comment "zlog needs a toolchain w/ threads, dynamic library"
+       depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
    在zlog/zlog.mk添加HOST端的依赖、编译命令和安装命令:
diff --git a/package/zlog/zlog.mk b/package/zlog/zlog.mk
index e2410d36..cabbb3a3 100644
--- a/package/zlog/zlog.mk
+++ b/package/zlog/zlog.mk
@@ -9,12 +9,17 @@ ZLOG_SITE = $(call github,HardySimpson,zlog,$(ZLOG_VERSION))
 ZLOG_LICENSE = LGPL-2.1
 ZLOG_LICENSE_FILES = COPYING
 ZLOG_INSTALL_STAGING = YES
+#HOST_PIGZ_DEPENDENCIES = host-zlib
 
 define ZLOG_BUILD_CMDS
        $(TARGET_MAKE_ENV) $(MAKE1) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" 
                -C $(@D) all
 endef
 
+define HOST_ZLOG_BUILD_CMDS
+       $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D)
+endef
+
 define ZLOG_INSTALL_STAGING_CMDS
        $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(STAGING_DIR)/usr -C $(@D) install
 endef
@@ -23,4 +28,9 @@ define ZLOG_INSTALL_TARGET_CMDS
        $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install
 endef
 
+
+define HOST_ZLOG_INSTALL_CMDS
+       $(HOST_MAKE_ENV) $(MAKE) PREFIX=$(HOST_DIR)/usr -C $(@D) install
+endef
+
 $(eval $(generic-package))
    在ackage/Config.in.host中添加source “package/zlog/Config.in.host”
diff --git a/package/Config.in.host b/package/Config.in.host
index e5fbb07f..664d650f 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -98,6 +98,7 @@ menu "Host utilities"
        source "package/vboot-utils/Config.in.host"
        source "package/xorriso/Config.in.host"
        source "package/zip/Config.in.host"
+       source "package/zlog/Config.in.host"
        source "package/zstd/Config.in.host"

之后,我们就可以在menuconfig中看到host zlog的选项了:

之后make host-zlog,就可以直接编译安装,默认安装在buildroot/output/host/之中:

$ ll output/host/lib/libzlog.so
lrwxrwxrwx 1 root root 12 5月  13 10:45 output/host/lib/libzlog.so -> libzlog.so.1*
$ ll output/host/include/zlog.h 
-rw-rw-r-- 1 root root 10779 5月   6  2020 output/host/include/zlog.h
经验分享 程序员 微信小程序 职场和发展