gpt4 book ai didi

makefile - Openwrt : How to add a specific library dependency in new package

转载 作者:行者123 更新时间:2023-12-02 19:39:00 24 4
gpt4 key购买 nike

我正在尝试添加 directfb 教程包。我按照 http://wiki.openwrt.org/doc/devel/packages 中的说明进行操作。目前,包已成功下载到 dl 文件夹,甚至在构建目录中编译,但是当我将安装部分添加到 makefile 时,出现依赖错误:

Package directfb_tutorials is missing dependencies for the following libraries:
libdirect-1.4.so.0
libdirectfb-1.4.so.0
libfusion-1.4.so.0
libpthread.so.0

包Makefile(我把它放在package/utils/directfb_tutorials/下):

include $(TOPDIR)/rules.mk
PKG_NAME:=DFBTutorials
PKG_VERSION:=0.5.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.directfb.org/downloads/Extras/
PKG_MD5SUM:=13e443a64bddd68835b574045d9025e9
PKG_LICENSE:=LGPLv2.1
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
define Package/directfb_tutorials
TITLE:=directfb_tutorials
SECTION:=utils
CATEGORY:=Utilities
URL:=http://directfb.org
DEPENDS:=+libdirectfb
endef
define Package/directfb_tutorials/description
DirectFB Tutorials
endef

define Build/Configure
$(call Build/Configure/Default,)
endef
define Package/directfb_tutorials/Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR)
endef
define Package/directfb_tutorials/install
$(INSTALL_DIR) $(1)/bin/dfb_tutorials
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/image/image $(1)/bin/dfb_tutorials/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/simple/simple $(1)/bin/dfb_tutorials/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/keybuffer/keybuffer $(1)/bin/dfb_tutorials/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/text/text $(1)/bin/dfb_tutorials/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/sprite/sprite $(1)/bin/dfb_tutorials/
endef
$(eval $(call BuildPackage,directfb_tutorials))
<小时/>

将 +libpthread 添加到 DEPENDS 部分时,libpthread.so.0 不会出现在上面缺少依赖项的错误消息中:

Package directfb_tutorials is missing dependencies for the following libraries:
libdirect-1.4.so.0
libdirectfb-1.4.so.0
libfusion-1.4.so.0

是因为我一定以错误的方式使用了 DEPENDS (DEPENDS= +libdirectfb)。如何判断 DEPENDS 标志的库的正确名称?该库安装到/usr/lib 而不是仅安装到/lib (如 libpthread)会产生影响吗?

提前致谢,托默

最佳答案

有关缺少库的消息来自 include/package-ipkg.mk 触发的检查。这是包创建的最新阶段。此检查正在验证所有可执行文件是否具有系统中可用的所有所需库。为了强制执行此操作,系统要求您在“DEPENDS”部分添加一些条目。但在此之前 - 您当然需要知道要添加哪些。

要查找丢失的库提供程序,如果大小写不明显(通常只是库名称),您可以在 $STAGING_DIR/pkginfo 文件夹中搜索。就我而言,它是 staging_dir/target-mips_mips32_uClibc-0.9.33.2/pkginfo。

只需 cd 到该文件夹​​并运行如下命令:

grep libdirect-1.4.so.0 "*.provides"

您应该会看到一个或多个结果。使用常识来选择最好的一个,通常它是一个类似于库的名称的包,但并非总是如此。这是一种通用方法,如果您错过了 DEPENDS 中的包并且无法轻易猜出正确的包,应该会有所帮助。

我的猜测是,您应该修改 Makefile 中的 DEPENDS 以包含这个:

DEPENDS:=+libdirect +libdirectfb +libfusion +libpthread

关于makefile - Openwrt : How to add a specific library dependency in new package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25722885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com