2014-09-08 3 views
4

Я пытаюсь добавить пакет для руководств directfb. Я выполнил инструкции в http://wiki.openwrt.org/doc/devel/packages. В настоящее время пакет успешно загружены в папку дл и даже скомпилирован в каталоге сборки, но когда я добавить раздел установки в Makefile я получаю зависимость ошибки:Openwrt: как добавить определенную зависимость библиотеки в новый пакет

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 (я ставлю его под пакет/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 в раздел ЗАВИСИТ, 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 вместо just/lib (например, libpthread), имеет значение?

Спасибо заранее, Томер

+0

ли ошибка во время сборки или при установке пакета? (добавьте больше контекста вокруг вашего сообщения об ошибке) – 6EQUJ5

ответ

6

сообщение о недостающих библиотеках происходит от проверки уволен из включают/package-ipkg.mk. Это последний этап создания пакета. Эта проверка проверяет, что все исполняемые файлы имеют все необходимые библиотеки, доступные в системе. Чтобы обеспечить это, система требует, чтобы вы добавили некоторые записи в раздел «ЗАВИСИМОСТЬ». Но прежде - вам нужно, конечно, знать, какой из них добавить.

Чтобы найти отсутствующего поставщика библиотеки, если случай не очевиден (как правило, это просто имя библиотеки), вы можете выполнить поиск в папке $ STAGING_DIR/pkginfo. В моем случае это staging_dir/target-mips_mips32_uClibc-0.9.33.2/pkginfo.

Просто перейдите в эту папку и запустить что-то вроде:

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

Вы должны увидеть один или несколько результатов. Используйте здравый смысл, чтобы выбрать лучший, обычно это пакет, названный похожим на библиотеку, но не всегда. Это общий способ, должен быть полезен, если вы пропустите пакет в DEPENDS и не можете легко угадать правильный (-ы).

Моя догадка, что вы должны изменить ЗАВИСИТ в вашем Makefile содержит это:

DEPENDS:=+libdirect +libdirectfb +libfusion +libpthread