ant参数列表过长-问题实验
版本:CentOS7 3.10.0-693.el7.x86_64
问题:ant编译时报错“参数列表过长”
实验解决方法: 修改内核文件 include/linux/binfmts.h 的参数限制
本次以实验为主,并不建议作为实际参考
结论: 重新编译内核升级难度较高,并不是按照文档操作即可,可能会有意料之外的问题,请谨慎。
-
查看内核版本: cat /proc/version 或 uname -r
-
源码包:
http://vault.centos.org/7.4.1708/os/Source/SPackages/kernel-3.10.0-693.el7.src.rpm
-
安装依赖包:
yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel bison
-
创建源码的编译目录树,目的源码存放地址
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
-
安装到编译目录 在
kernel-3.10.0-693.el7.src.rpm
所在的目录下rpm -i kernel-3.10.0-693.el7.src.rpm cd ~/rpmbuild/SPECS rpmbuild -bp --target=$(uname -m) kernel.spec
-
源码目录
/root/rpmbuild/BUILD/kernel-3.10.0-693.el7/linux-3.10.0-693.el7.centos.x86_64
此次修改文件: include/linux/binfmts.h #define MAX_ARG_PAGES 32 --> 64
-
内核配置
- make menuconfig # 显示类似图形界面的方式来挑选内核功能
- make oldconfig # 使用已经存在的 ./.config 文件内容 ,本次采用方式
- make xconfig # 以Qt为图形界面基础功能的图形化界面显示
- make gconfig # 通过以Gtk为图形接口基础功能的图形化界面显示
- make config # 以条件式的一条一条的列出让你选择
-
编译
- make -j 4 clean #先清除临时文件
- make -j 4 bzImage #先编译内核
- make -j 4 modules #再编译模块
-
安装
-
安装实际模块: make modules_install
-
安装新内核:
cp -rf /root/rpmbuild/BUILD/kernel-3.10.0-693.el7/linux-3.10.0-693.el7.centos.x86_64/arch/x86/boot/bzImage /boot/vmlinuz-3.10.0 cp -rf /root/rpmbuild/BUILD/kernel-3.10.0-693.el7/linux-3.10.0-693.el7.centos.x86_64/.config /boot/config-3.10.0 chmod a+x /boot/vmlinuz-3.10.0 dracut -v /boot/initramfs-3.10.0.img 3.10.0 grub2-mkconfig -o /boot/grub2/grub.cfg
-
-
重启选择新内核
结论:
重新编译内核影响比较严重,尤其是需要在生产环境操作时,如果可以做快照,那你尽情尝试吧。
ant编译报错最好还是从报错的参数来处理,参数长度过长时,就需要用将一些没有依赖到的文件进行排除,减少参数的长度。