【问题标题】:Buidling a new package for buildroot: hub-ctrl为 buildroot 构建一个新包:hub-ctrl
【发布时间】:2017-11-16 17:55:43
【问题描述】:

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

GIT 存储库在此站点上:

https://github.com/codazoda/hub-ctrl.c

这是我构建的 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 的存储库,所以我决定自己构建一个,但我有错误。我不知道如何链接包含和库文件夹。我不是构建 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:没有这样的文件或目录 #包括 ^ 编译终止。

有什么建议吗?

最好的问候。

【问题讨论】:

  • 说服 hub-ctrl.c 维护者在上游添加一个工作的 Makefile 会更容易。 CMake 会更好。你应该使用pkg-config 来设置libusb 路径。顺便提一句。 libusb 必须作为依赖项添加到您的 *.mk 文件中。
  • 这个 hub-ctrl.c 是否与自 2017.11-rc1 以来我们现在在 Buildroot 中拥有的 uhubctl (github.com/mvp/uhubctl) 相关?
  • 是的,彼得,你是对的。我正在使用 buildroot-2016.02,因为我有一个不同平台的存储库,我无法轻松迁移到 buildroot-2017.11-rc1,但是将这个包添加到我的 buildroot-2016.02 本地存储库对我来说非常容易。非常感谢。

标签: makefile buildroot


【解决方案1】:

我遵循了 Peter Korsgaard 的指示。我正在使用 buildroot-2017.11-rc1 中的包 uhubctl 并将这个包添加到我的 buildroot-2016.02 自定义平台中。一切正常,我可以关闭硬件平台中的 USB 端口。

非常感谢 Peter Korsgaard 的建议。

【讨论】:

    猜你喜欢
    • 2019-06-05
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多