libiconv库简单裁剪支持CP437编码

有许多人在做项目的时候都会遇到字符编码的不一致导致的乱码问题,那如何去解决呢?在Linux系统上可以通过iconv函数族来进行编码转换,但有时候我们并不需要全部的字符集,因为可能会占用比较大的空间,本文主要支持CP437编码格式
库文件下载:https://ftp.gnu.org/pub/gnu/libiconv/

1.下载完成后直接解压

  tar -xvf libiconv-1.15.tar.gz 

2.进入目录,编写编译脚本,build.sh

CC=gcc
HOST=
TARGET=
DIR=/root/linux/dir

echo $DIR

./configure CC=$CC  --target=$TARGET --host=$HOST --prefix=$DIR --enable-extra-encodings

make && make install

上面注意 --enable-extra-encodings是打开扩展字符集
需要根据自己使用场合修改交叉编译链
3.执行脚本进行编译

chmod +x build.sh
./build.sh

4.编译完成后
在这里插入图片描述
5.这里执行strip压缩体积
在这里插入图片描述
6.我们执行程序看看都包含哪些字符集,可以看到支持了所有的字符,有好多是我们不需要的,下面进行裁剪
该iconv可执行文件依赖上面的库,如果导入arm设备要导入相应的库文件
在这里插入图片描述
7.进入lib目录编辑iconv.c文件,屏蔽一些无用代码

//#define USE_AIX
//#define USE_OSF1
#define USE_DOS
//#define USE_EXTRA

首先屏蔽一些宏,然后编译发现还是有一些我们不想要的字符集
8.编辑lib/encodings_dos.def文件删除不需要的字符集,同时删除aliases_dos.h文件的相关定义,最后删除canonical_dos.h中的一些报错就可以了
9.经过strip后这个时候在看就小的多了
在这里插入图片描述
再次使用iconv查看支持的字符集就可以了

网上给出的另一种裁剪方法:

libiconv库裁剪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值