为 buildroot 构建一个新包:hub-ctrl
Buidling a new package for buildroot: hub-ctrl
我正在尝试构建一个新包,以便在 buildroot 中使用这个有用的程序来为 raspberry pi 的不同 USB 端口供电 on/off。
GIT 存储库位于此站点上:
https://github.com/codazoda/hub-ctrl.c
这是我构建的集线器-ctrl.mk:
################################################################################
#
# hub-ctrl
#
################################################################################
HUB_CTRL_VERSION = 42095e522859059e8a5f4ec05c1e3def01a870a9
HUB_CTRL_SITE = https://github.com/codazoda/hub-ctrl.c
HUB_CTRL_SITE_METHOD = git
HUB_CTRL_LICENSE = GPLv2+
define HUB_CTRL_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
endef
define HUB_CTRL_INSTALL_TARGET_CMDS
# Install predictead application
$(INSTALL) -m 4755 -D $(@D)/hub-ctrl $(TARGET_DIR)/usr/sbin/hub-ctrl;
endef
$(eval $(generic-package))
到目前为止,一切正常。但是我意识到存储库没有 Makefile,所以我决定自己构建一个,但我有错误。我不知道如何 link 包含和库文件夹。我不是构建 makefile 的专家,所以我需要一些帮助。这是我的 Makefile:
PROJECT_ROOT = .
OUTDIR = $(PROJECT_ROOT)/bin
BASE_NAME = hub-ctrl
NAME = $(BASE_NAME)$(D)
OBJ = $(BASE_NAME).o
INC =
LIBS = -lusb
MKDIR = mkdir -p
MV = mv
# Master rule
.PHONY: all
all: $(NAME)
# Output binary
$(NAME): $(OBJ)
$(CC) $(CFLAGS) $(INC) $(OBJ) -o $(BASE_NAME) $(LIBS)
-@$(MV) $(BASE_NAME) $(OUTDIR)/$(BASE_NAME)
rm *.o
# Intermediate object files
$(OBJ): %.o: %.c
@$(MKDIR) $(OUTDIR)
$(CC) $(CFLAGS) $(LIBS) $(INC) -c $<
# Cleanup intermediate objects
.PHONY: clean_obj
clean_obj:
rm -f $(OBJ)
@echo "obj cleaned up!"
# Cleanup everything
.PHONY: clean
clean: clean_obj
rm -rf $(OUTDIR)/$(BASE_NAME)
@echo "all cleaned up!"
这是我遇到的错误:
hub-ctrl.c:12:17: 致命错误: usb.h: 没有那个文件或目录
#包括
^
编译终止。
有什么建议吗?
此致。
我遵循了 Peter Korsgaard 的指示。我正在使用来自 buildroot-2017.11-rc1 的包 uhubctl 并且我已将此包添加到我的 buildroot-2016.02 自定义平台。一切正常,我可以关闭硬件平台中的 USB 端口。
非常感谢 Peter Korsgaard 的建议。
我正在尝试构建一个新包,以便在 buildroot 中使用这个有用的程序来为 raspberry pi 的不同 USB 端口供电 on/off。
GIT 存储库位于此站点上:
https://github.com/codazoda/hub-ctrl.c
这是我构建的集线器-ctrl.mk:
################################################################################
#
# hub-ctrl
#
################################################################################
HUB_CTRL_VERSION = 42095e522859059e8a5f4ec05c1e3def01a870a9
HUB_CTRL_SITE = https://github.com/codazoda/hub-ctrl.c
HUB_CTRL_SITE_METHOD = git
HUB_CTRL_LICENSE = GPLv2+
define HUB_CTRL_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
endef
define HUB_CTRL_INSTALL_TARGET_CMDS
# Install predictead application
$(INSTALL) -m 4755 -D $(@D)/hub-ctrl $(TARGET_DIR)/usr/sbin/hub-ctrl;
endef
$(eval $(generic-package))
到目前为止,一切正常。但是我意识到存储库没有 Makefile,所以我决定自己构建一个,但我有错误。我不知道如何 link 包含和库文件夹。我不是构建 makefile 的专家,所以我需要一些帮助。这是我的 Makefile:
PROJECT_ROOT = .
OUTDIR = $(PROJECT_ROOT)/bin
BASE_NAME = hub-ctrl
NAME = $(BASE_NAME)$(D)
OBJ = $(BASE_NAME).o
INC =
LIBS = -lusb
MKDIR = mkdir -p
MV = mv
# Master rule
.PHONY: all
all: $(NAME)
# Output binary
$(NAME): $(OBJ)
$(CC) $(CFLAGS) $(INC) $(OBJ) -o $(BASE_NAME) $(LIBS)
-@$(MV) $(BASE_NAME) $(OUTDIR)/$(BASE_NAME)
rm *.o
# Intermediate object files
$(OBJ): %.o: %.c
@$(MKDIR) $(OUTDIR)
$(CC) $(CFLAGS) $(LIBS) $(INC) -c $<
# Cleanup intermediate objects
.PHONY: clean_obj
clean_obj:
rm -f $(OBJ)
@echo "obj cleaned up!"
# Cleanup everything
.PHONY: clean
clean: clean_obj
rm -rf $(OUTDIR)/$(BASE_NAME)
@echo "all cleaned up!"
这是我遇到的错误:
hub-ctrl.c:12:17: 致命错误: usb.h: 没有那个文件或目录 #包括 ^ 编译终止。
有什么建议吗?
此致。
我遵循了 Peter Korsgaard 的指示。我正在使用来自 buildroot-2017.11-rc1 的包 uhubctl 并且我已将此包添加到我的 buildroot-2016.02 自定义平台。一切正常,我可以关闭硬件平台中的 USB 端口。
非常感谢 Peter Korsgaard 的建议。