Openwrt报告库找不到
Package * is missing dependencies for the following libraries:
libc.so.6 或其他
先检查系统里面有没有这个库存在,如果没有,安装 (在/lib /lib64 等目录找)
之后添加库openwrt的编译环境
修改 libc.provides 平台不同,可能目录不同,find ./stagging_dir -name libc.provides 下
一般在 stagging_dir/target-mipsel_r2_uClibc-0.9.33.2/pkginfo/libc.provides
底部添加
libc.so.6
或其他需要的库,编译时候会把这个so转为openwrt平台的库
最后在对应的openwrt 的Makefile中加依赖
要是不行的话,使用使用在
define Package/sc/install 中增加
$(CP) /your lib.so $(1)/usr/bin/
也可以...
openwrt 的Makefile 示例
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
#你的包名
PKG_NAME:=sc
PKG_RELEASE:=1
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
#包信息
define Package/sc
#下面两个编译时候编译界面上用到的分类
SECTION:=utils
CATEGORY:=Utilities
TITLE:=certain information sc customer
#这加依赖库
DEPENDS:=+libpthread +libpcap
endef
define Package/sc/description
#包介绍
If you can‘t figure out what this program does, you‘re probably
brain-dead and need immediate medical attention.
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
#包安装执行
define Package/sc/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/sc $(1)/usr/bin/
endef
$(eval $(call BuildPackage,sc))
一般写到的代码放置到/your openwrt source/package/中
建立一个目录,如sc,目录结构如下:
package/sc
package/sc/Makefile (上面那个文件)
package/sc/src/your.c
package/sc/src/Makefile
package/sc/src/....#其他文件
之后运行 sudo make menuconfig 找到你的软件包 找的方式是:define Package/sc 里面 SECTION 和CATEGORY 的定义
注意:你的Makefile中,千万不要使用gcc 要使用$(CC),否则编译出来用不了的..
Makefile如下示例:
sc:sc.o
$(CC) sc.o -o sc -lpthread -lpcap
sc.o:sc.c sc.h
$(CC) -c sc.c
clean:
rm -rf *.o sc
前面是TAB减,非空格...$(CC)千万不能使用gcc代替...
openwrt 的依赖找不到问题