已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
使用 OpenWrt SDK 交叉编译 gnokii 的过程
这一楼用来记录小光使用 OpenWrt SDK 交叉编译 gnokii 的过程

因为要使用路由器控制TC35发送短信,所以用到gnokii程序,官方网站如下:
XXXXXXXXXXXXXXXXX/

交叉编译大型软件不同于编写 HelloWorld,所以需要更为严谨的环境配置,放弃楼主位中第三步的用法,转而使用官方维基推荐的方式,并手动将存放SDK的目录被解压至/opt/目录下,我写了一个脚本文件来实现环境变量的设置,内容如下:

PATH=$PATH:"/opt/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin"
export PATH

STAGING_DIR="/opt/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir"
export STAGING_DIR

bash

PATH的作用是把SDK中的编译器放进环境变量,STAGING_DIR我也不知道是做什么用的,但是官方让写,就写了,最下面的bash是在刚刚配置好的环境变量下再开一个shell,否则脚本执行完毕环境变量就会被释放

进入 gnokii 的目录进行configure,我使用如下命令进行交叉编译的配置,并关闭了一些不需要的功能
./configure --prefix=/usr/local/gnokii --host=mips-openwrt-linux-uclibc --target=mips-openwrt-linux-uclibc --disable-xdebug --disable-fulldebug --disable-rlpdebug --disable-irda --disable-phonet

使用gmake命令进行编译,编译过程中可能会提示缺少一些所需的库文件,通常你可以在SDK中的一个target-***的子文件夹中找到它们,把它们复制到toolchain-***相应的子文件夹中以便继续编译工作,复制时可在cp命令中加-s参数创建软连接而非复制文件,我复制了XXXXXXXXXXXXXX.0、XXXXXXXXXXXXXX、XXXXXXXXXXXXXXXXX 这3个文件,使用如下命令:

cp /opt/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/target-mips_r2_uClibc-0.9.33.2/root-ar71xx/usr/lib/XXXXXXXXXXXXXX.0 /opt/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/lib/ -s
cp /opt/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/target-mips_r2_uClibc-0.9.33.2/root-ar71xx/usr/lib/XXXXXXXXXXXXXX /opt/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/lib -s
cp /opt/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/target-mips_r2_uClibc-0.9.33.2/usr/lib/XXXXXXXXXXXXXXXXX /opt/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/lib/ -s


编译完成后,使用gmake install把编译好的软件复制到指定的prefix中,非root用户使用sudo方式可能遇到“ [install-libLTLIBRARIES] Error 127”的报错,是因为sudo中没有环境变量的缘故,请使用su命令直接进入root权限后再执行一遍之前所述的脚本,以便设置好环境变量。

cd到prefix的目录上一层(如我的是“/usr/local/gnokii”),并使用tar -zcf gnokii.tar.gz gnokii命令打包编译好的gnokii,注意不要使用tar中的-j参数,openwrt不具备解压它的能力,使用楼主位中所述的scp命令把打包好的gnokii复制到路由器的/tmp/目录下,这个目录通常有很大余量,大小由路由器内存决定,软件存放至此可以避免填满路由器的闪存,但重启后软件会消失。

gnokii在路由器中解压好后,运行时可能会提示需要“XXXXXXXXXXXX.7”库,你可以在刚解压好的gnokii目录中找到它,并软连接至/lib/目录,接下来还可能会提示需要“XXXXXXXXXXXXXX.0”库,在路由器的GUI管理界面中安装“glib2”包可解决该问题。

至此如果一切顺利,gnokii便可以在你的路由器中运行。 无标题.png
文号 / 511106

万流景仰
名片发私信
学术分 15
总主题 317 帖总回复 5556 楼拥有证书:进士 学者 机友 笔友
注册于 2008-03-06 02:57最后登录 2024-05-01 13:34
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步

个人简介

Inspiration, Innovation, Discovery

文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传,正在处理中
空空如也~
处理中...
处理失败
加载中...
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
插入公式
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
ID: {{user.uid}}