以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