linux php 安装libiconv过程与总结

问题:在嵌入式linux 已经安装好的php的情景下,需要安装一个扩展库libiconv
背景:从后台传的数据含有中文(gbk2312)的通过json_encode 显示为null,查阅资料发现json_encode只能转换utf-8的数据,解决办法两种:1.安装libiconv库 2.通过php urlencode 加密,在通过urldecode解码
解决办法1:

	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>.
/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-"

原文地址:https://www.cnblogs.com/moon-yyl/p/11857178.html