openwrt添加自己的应用程序(SDK下编译模块)出现的问题

openwrt 版本: 15.05(CC)
最近在openwrt里面想编写一个串口的读写程序,没想到会出现以下问题
1、编译的时候
以下为网友遇到的问题
Package helloworld is missing dependencies for the following libraries: libc.so.6  libpthread.so.0
缺少类库,然后其实我发现我的类库在系统里是存在的:
locate libc.so.6
结果:
/lib/i386-linux-gnu/libc.so.6
/lib/i386-linux-gnu/ libpthread.so.0
/lib64/libc.so.6
但是我的应用程序用到了 Libpthread,所以提示 少了2个依赖库。
按照网友的做法
第一步:
把/lib/i386-linux-gnu/libc.so.6  libpthread.so.0这2个文件拷贝到家目录下的openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib这里。
cp /lib/i386-linux-gnu/libc.so.6  ~/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib
cp /lib/i386-linux-gnu/libpthread.so.0  ~/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib
第二步:
在你写的代码文件夹下(我写的是个my_ipk)下的Makefile里

这里我并没有照着网友的做,因为我加了之后,拷贝到板子上opkg都装不上,如下所示:




增加:这一步我跳过

DEPENDS:=+libc +libpthread 

就是在:
define Package/my_ipk
SECTION:=utils 
CATEGORY:=Utilities 
TITLE:=My_ipk-- prints a snarky message 
DEPENDS:=+libc
endef
这个define下面。


第三步:也是在Makefile里增加:
define Package/my_ipk/install
$(INSTALL_DIR)  $(1)/bin
$(CP) /lib/i386-linux-gnu/libc.so.6 $(1)/bin
$(CP) /lib/i386-linux-gnu/libpthread.so.0 $(1)/bin
$(INSTALL_BIN)  $(PKG_BUILD_DIR)/my_ipk $(1)/bin/
endef
这里多了一行$(CP)的代码。


最后一步: 这一步我跳过
在/home/user/attitude/staging_dir/target-mips_r2_uClibc-0.9.33.2/pkginfo下的libc.provides文件里增加两行:
/lib/i386-linux-gnu/libc.so.6
libc.so.6

我只做了第一步和第三步,编译完后scp ./bin/ar71xx/packages/base/my_ipk_1_ar71xx.ipk  root@192.168.1.1: 拷贝到开发板,如果你的网络有问题,上篇文档里有说明,如果把此文件编进文件系统里,比较麻烦一点。

在开发板中输入 opkg install my_ipk_1_ar71xx.ipk 提示如下:


执行程序的时候出现的错误。缺少libthread.so.0这个库,这个库可不能随便从虚拟机里拷贝一个过来,放到/lib下,因为格式肯定不对,那我们就看看openwrt里有没有这个库,进入openwrt根目录,mk,mk就是make menuconfig啦,嫌太长,就自己alias啦。
搜索一下,发现一个可疑对象如下所示:

好,位置显示在Base system下,我们进入该选项找到
<*> libpthread.......................................... POSIX thread library 
选中之后推出保存,make V=99编译openwrt。
之后会在bin/ar71xx/packages/base/libpthread_0.9.33.2-1_ar71xx.ipk 出现。scp bin/ar71xx/packages/base/libpthread_0.9.33.2-1_ar71xx.ipk root@192.168.1.1:
执行以下操作

程序成功运行了。
本人也是刚刚接触openwrt,如有不对的地方,请多多指教。。。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenWrt SDK 编译可以用来构建 OpenWrt 软件包,以及定制 OpenWrt 固件。下面是 OpenWrt SDK 编译的步骤: 1. 下载 OpenWrt SDKOpenWrt 的官方网站上下载 SDK,选择与你设备所使用的 OpenWrt 版本相同的 SDK。将 SDK 下载到你的工作目录中。 2. 解压 OpenWrt SDK 使用以下命令解压 OpenWrt SDK: ``` tar zxvf openwrt-sdk-<version>-<target>-gcc-<version>-musl-<architecture>.tar.gz ``` 其中,`version` 表示 OpenWrt 版本,`target` 表示目标硬件平台,`architecture` 表示目标 CPU 架构。 3. 进入 OpenWrt SDK 目录 使用以下命令进入 OpenWrt SDK 目录: ``` cd openwrt-sdk-<version>-<target>-gcc-<version>-musl-<architecture> ``` 4. 安装编译工具 使用以下命令安装编译工具: ``` ./scripts/feeds update -a ./scripts/feeds install -a ``` 5. 配置编译环境 使用以下命令配置编译环境: ``` make menuconfig ``` 在菜单中选择你需要的软件包和配置选项,然后保存并关闭菜单。 6. 编译软件包 使用以下命令编译软件包: ``` make package/<package-name>/compile V=s ``` 其中,`package-name` 表示软件包的名称。 7. 编译固件 使用以下命令编译固件: ``` make V=s ``` 在编译过程中,你可以使用 `V=s` 参数来查看详细的编译信息。 8. 安装软件包 使用以下命令安装软件包: ``` opkg install <package-name> ``` 其中,`package-name` 表示软件包的名称。 以上就是 OpenWrt SDK 编译的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值