我正在尝试为directfb教程添加一个包。我按照http://wiki.openwrt.org/doc/devel/packages中的说明操作。 目前,包已成功下载到dl文件夹,甚至在build目录中编译,但是当我将install部分添加到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)会有所不同吗?
提前致谢, Tomer的
答案 0 :(得分:6)
有关缺少库的消息来自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
答案 1 :(得分:3)
查看iftop核心包的语法示例:
https://dev.openwrt.org/browser/trunk/package/network/utils/iftop/Makefile
这是一个完美的例子。正确的语法应该是:
DEPENDS:=+libdirectfb +libpthread