CentOS下编译Wireshark 1.9.2遇非ASCII字符错误求解决
在CentOS编译Wireshark 1.9.2时的编码错误问题解决
问题场景
我在CentOS系统中尝试编译Wireshark 1.9.2,执行了以下操作:
mkdir build cd build cmake .. make install
第一次报错信息
执行make install时出现如下错误:
[root@localhost build]# make install Scanning dependencies of target auxiliary [ 0%] Generating AUTHORS-SHORT [ 0%] Generating capinfos.1, capinfos.html [ 0%] Generating dftest.1, dftest.html [ 0%] Generating dumpcap.1, dumpcap.html [ 0%] Generating editcap.1, editcap.html [ 0%] Generating asn2deb.1, asn2deb.html /home/techie/wireshark-1.9.2/doc/asn2deb.pod around line 8: Non-ASCII character seen before =encoding in '[-a�I<ASN.1'. Assuming ISO8859-1 POD document had syntax errors at /usr/bin/pod2man line 69. make[2]: *** [asn2deb.1] Error 255 make[1]: *** [CMakeFiles/auxiliary.dir/all] Error 2 make: *** [all] Error 2 [root@localhost build]# make install_sw make: *** No rule to make target `install_sw'. Stop.
尝试修复后的二次报错
我尝试删除报错中提到的非ASCII字符(文件中显示为空格,替换为正常空格),但错误出现在了新的位置。替换所有此类字符后,又出现新错误:
[root@localhost build]# make install [ 0%] Generating idl2deb.1, idl2deb.html [ 0%] Generating idl2wrs.1, idl2wrs.html [ 0%] Generating mergecap.1, mergecap.html [ 0%] Generating randpkt.1, randpkt.html [ 0%] Generating rawshark.1, rawshark.html [ 0%] Generating reordercap.1, reordercap.html [ 0%] Generating text2pcap.1, text2pcap.html [ 0%] Generating tshark.1, tshark.html [ 0%] Generating AUTHORS-SHORT-FORMAT, wireshark.pod [ 0%] Generating wireshark.1, wireshark.html Wide character in printf at /usr/share/perl5/vendor_perl/Pod/Simple.pm line 539. wireshark.pod around line 3549: Non-ASCII character seen before =encoding in 'KovE<aacute>ř'. Assuming UTF-8 POD document had syntax errors at /usr/bin/pod2man line 69. make[2]: *** [wireshark.1] Error 255 make[1]: *** [CMakeFiles/auxiliary.dir/all] Error 2 make: *** [all] Error 2 [root@localhost build]#
问题分析与解决方法
你的编译操作流程本身没有问题,报错根源是Perl的pod2man工具处理Wireshark的POD文档时,编码识别逻辑与文件实际编码不匹配,且非ASCII字符出现在编码声明之前导致解析失败。以下是几种可行的解决方式:
1. 先设置UTF-8环境变量
编译前先配置系统环境为UTF-8编码,让Perl工具正确识别文件中的非ASCII字符:
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
执行完上述命令后,回到build目录重新运行make install。
2. 给POD文件添加编码声明
找到报错的POD文件(比如doc/asn2deb.pod、doc/wireshark.pod),在文件的最开头添加一行编码声明:
=encoding UTF-8
确保这一行位于所有非ASCII字符之前,保存文件后重新执行编译安装流程。
3. 跳过手册文档生成(快速方案)
如果不需要生成Wireshark的手册文档,可以在cmake阶段添加参数跳过POD文档的构建:
cmake .. -DENABLE_POD=OFF
之后再执行make install即可绕过编码错误。
4. 升级Perl的Pod::Simple模块
老版本的Pod::Simple模块对UTF-8字符的处理存在缺陷,可以升级到最新版本:
# 先安装cpan工具(如果没有的话) yum install perl-CPAN # 升级Pod::Simple cpan Pod::Simple
升级完成后重新编译安装。
内容的提问来源于stack exchange,提问作者Dying Falcon
相关产品推荐
相关产品推荐

