クロスコンパイルライブラリを使用したクロスコンパイルパッケージ

クロスコンパイルライブラリを使用したクロスコンパイルパッケージ

クロスコンパイルする動的リンクライブラリを使用するOpenWRTパッケージを作成しようとしています。私が知る限り、ライブラリを.soファイルにコンパイルするのはうまくいきます。コンパイル後、find . -name "libname.so"次のコンテンツがルートディレクトリに返されます。

./staging_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx/usr/lib/libname.so
./staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/libname.so
./build_dir/target-mips_34kc_uClibc-0.9.33.2/libname-1.0/ipkg-ar71xx/libname/usr/lib/libname.so
./build_dir/target-mips_34kc_uClibc-0.9.33.2/libname-1.0/libname.so
./build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx/usr/lib/libname.so

ライブラリを私のプロジェクトにリンクするためにこれを正確にどのように使用しますか?私のプロジェクトMakefileには次のものがあります。

include $(TOPDIR)/rules.mk

PKG_NAME:=blocker
PKG_VERSION:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/blocker
    TITLE:=$(PKG_NAME)
    SECTION:=util
    CATEGORY:=Utilities
    DEPENDS:=+libname
endef

TARGET_CFLAGS += -Wall -llibname

define Package/blocker/description
    Blocks incomming SSH and HTTP connections
endef

define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/Compile
    $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
    $(TARGET_CONFIGURE_OPTS)
endef

define Package/blocker/install
    $(INSTALL_DIR) $(1)/sbin/
    $(INSTALL_DIR) $(1)/etc/config
    $(INSTALL_DIR) $(1)/etc/init.d
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/blocker.init $(1)/etc/init.d/blocker
    $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/blocker.conf $(1)/etc/config/blocker
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/blocker $(1)/sbin/blocker
endef

$(eval $(call BuildPackage,blocker))

ただし、このパッケージをコンパイルするとエラーが発生します。

#include <libname.h> // <-- fatal error: libname.h: No such file or directory

int main(void)
{
    return 1;
}

ベストアンサー1

インストールブロックで libname librarry をコンパイルした後、パッケージのコンパイル時にヘッダーを見つけるために libname.h ファイルを ?(1)/usr/lib にインストールします。

おすすめ記事