linux php 安装libiconv过程与总结
问题:在嵌入式linux 已经安装好的php的情景下,需要安装一个扩展库libiconv
背景:从后台传的数据含有中文(gbk2312)的通过json_encode 显示为null,查阅资料发现json_encode只能转换utf-8的数据,解决办法两种:1.安装libiconv库 2.通过php urlencode 加密,在通过urldecode解码
解决办法1:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 1>.下载libiconv 包 http: //ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz 2>.解压,放在php-5.4.30 ext 中 cd php-5.4.30/ext tar zxvf libiconv-1.14.tar.gz 3>.安装 ./configure --prefix=/usr/local/libiconv --enable- static --disable-shared --host=$host make make install 安装成功后会生成4个文件夹 bin include lib share 注意在 lib目录下生成.a 如下图 4>.编译php 加上iconv的路径 ./configure --prefix=/usr/local/php5.4.30 -- with -iconv=/usr/local/libiconv/ |

编译成功就可以使用了:
* 在编译libiconv加上host 总是报如下的问题:
1 2 3 4 5 6 7 8 9 10 | 1>. /usr/local/ARMv7a9_iproc/usr/bin/../lib/gcc/arm-broadcom-linux-uclibcgnueabi/4.7.2/../../../../arm-broadcom-linux-uclibcgnueabi/bin/ld: iconv.o: Relocations in generic ELF (EM: 3) /usr/local/ARMv7a9_iproc/usr/bin/../lib/gcc/arm-broadcom-linux-uclibcgnueabi/4.7.2/../../../../arm-broadcom-linux-uclibcgnueabi/bin/ld: iconv.o: Relocations in generic ELF (EM: 3) /usr/local/ARMv7a9_iproc/usr/bin/../lib/gcc/arm-broadcom-linux-uclibcgnueabi/4.7.2/../../../../arm-broadcom-linux-uclibcgnueabi/bin/ld: iconv.o: Relocations in generic ELF (EM: 3) /usr/local/ARMv7a9_iproc/usr/bin/../lib/gcc/arm-broadcom-linux-uclibcgnueabi/4.7.2/../../../../arm-broadcom-linux-uclibcgnueabi/bin/ld: iconv.o: Relocations in generic ELF (EM: 3) iconv.o: could not read symbols: File in wrong format collect2: error: ld returned 1 exit status make[1]: *** [install] Error 1 make[1]: Leaving directory `/home/yilia/3.61_tmp/ESW/apps/php-5.4.30/ext/libiconv-1.14/src' make: *** [install] Error 2 |
在libicon 源码的地方 进入libiconv-1.14 执行 make distclean 清理一下,删掉生成libiconv,在重新编译就可以了。
2>.在安装好iconv,编译php的时候总是报如下错误,
原因:1.php中--with-iconv的路径写的不对
2.在编译php的时候需要重新编译libiconv。
#解决办法2比较简单就不在说了。
常用知识总结:
*用到的基础命令:
$?:命令执行后返回的状态
$#:位置参数的数量
$*:所有位置参数的内容
*数值测试
-eq:等于则为真
-ne:不等于则为真
-gt:大于则为真
-lt:小于则为真
-le:小于等于则为真
* 文件测试
-e 文件名:如果文件存在则为真
-r 文件名:如果文件存在且可读则为真
-w 文件名: 如果文件存在且可写则为真
-x 文件名: 如果文件存在且可执行则为真
-d 文件名: 如果文件存在且为目录则为真
-f 文件名: 如果文件存在且为普通文件则为真
*$CROSS_COMPILE"strip" -S $ROOTFS_DIR/usr/bin/ros
编译出来的过滤很多打印 调试 压缩
$CROSS_COMPILE :export CROSS_COMPILE="$CC_TOOL arm-broadcom-linux-uclibcgnueabi-"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)