Makefile 为buildroot构建新包:hub-ctrl

Makefile 为buildroot构建新包:hub-ctrl,makefile,buildroot,Makefile,Buildroot,我正在尝试构建一个新的包,以便在buildroot中使用这个有用的程序来打开/关闭来自raspberry pi的不同USB端口 GIT存储库位于以下站点: 这是我构建的hub-ctrl.mk: ################################################################################ # # hub-ctrl # ########################################################

我正在尝试构建一个新的包,以便在buildroot中使用这个有用的程序来打开/关闭来自raspberry pi的不同USB端口

GIT存储库位于以下站点:

这是我构建的hub-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,所以我决定自己构建一个,但是我有错误。我不知道如何链接include和library文件夹。我不是构建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!"
PROJECT\u ROOT=。
OUTDIR=$(项目根)/bin
基本名称=集线器控制键
名称=$(基本名称)$(D)
OBJ=$(基本名称)。o
公司=
LIBS=-lusb
MKDIR=MKDIR-p
MV=MV
#主规则
冒牌货:全部
全部:$(名称)
#输出二进制
$(名称):$(OBJ)
$(CC)$(CFLAGS)$(INC)$(OBJ)-o$(基本名称)$(LIBS)
-@$(MV)$(基本名称)$(输出目录)/$(基本名称)
rm*.o
#中间对象文件
$(OBJ):%.o:%.c
@$(MKDIR)$(OUTDIR)
美元(CC)$(CFLAGS)$(LIBS)$(INC)-c$<
#清理中间对象
.冒牌货:干净的
清洁对象:
rm-f$(OBJ)
@echo“obj清理完毕!”
#清理一切
.假冒:干净
清洁:清洁
rm-rf$(OUTDIR)/$(基本名称)
@echo“全部清理完毕!”
这就是我的错误:

hub ctrl.c:12:17:致命错误:usb.h:没有这样的文件或目录 #包括 ^ 编译终止

有什么建议吗


致以最良好的祝愿。

我已经遵循了彼得·科斯加德的指示。我正在使用buildroot-2017.11-rc1中的包uhubctl,我已经将此包添加到我的buildroot-2016.02定制平台中。一切正常,我可以关闭硬件平台中的usb端口


非常感谢Peter Korsgaard的建议。

我遵循了Peter Korsgaard的指示。我正在使用buildroot-2017.11-rc1中的包uhubctl,我已经将此包添加到我的buildroot-2016.02定制平台中。一切正常,我可以关闭硬件平台中的usb端口


非常感谢Peter Korsgaard的建议。

说服hub ctrl.c维护人员向上游添加一个工作的Makefile会更容易。那就更好了。您应该使用来设置libusb路径。顺便说一句,libusb必须作为依赖项添加到你的*.mk文件中。这个hub ctrl.c是否与我们自2017年11月1日起在Buildroot中使用的uhubctl()有任何关系?是的,Peter,你是对的。我正在使用Buildroot-2016.02,因为我有一个具有不同平台的存储库,我无法轻松迁移到Buildroot-2017.11-rc1,但我很容易将此包添加到buildroot-2016.02本地存储库中。非常感谢。说服hub ctrl.c维护人员向上游添加一个工作的Makefile会更容易。那就更好了。您应该使用来设置libusb路径。顺便说一句,libusb必须作为依赖项添加到你的*.mk文件中。这个hub ctrl.c是否与我们自2017年11月1日起在Buildroot中使用的uhubctl()有任何关系?是的,Peter,你是对的。我正在使用Buildroot-2016.02,因为我有一个具有不同平台的存储库,我无法轻松迁移到Buildroot-2017.11-rc1,但我很容易将此包添加到buildroot-2016.02本地存储库中。非常感谢你。