linux4.10编译,记一次编译linux 2.6 和4.10内核源码

0x00前言

很早就想开始学习linux内核漏洞的利用,之前的调试方式是借助kgdb来在两个vmware中调试,实际操作起来是没问题的。然而最近看到很多文章是使用qemu+gdb来调试的,因此决定尝试一下这种调试方式,第一步就是编译linux源码,本文将简述一下编译linux2.6源码和4.10源码时遇到的坑。

0x01 编译linux2.6源码

编译linux2.6的源码的过程参考这里:https://www.anquanke.com/post/id/85837。在按照文章中的步骤走的时候同遇到了很多问题,后来遇到某些坑绕不过去了....遇到的坑点大多数是make时遇到的。

问了一下编译过的同学,说是采用低版本的ubuntu来编译试试。经过了不断的搜索和尝试,发现linux2.6的源码使用gcc version>=4.6会遇到各种错误,有网友说用gcc4.5可以编译成功。下载源码 https://ftp.gnu.org/gnu/gcc/gcc-4.5.4/

编译时发现需要这些:configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.

编译这些依赖的源码时也遇到了问题。最后通过apt-get gcc-4.4解决。用gcc4.4编译时2.6源码时,没有遇到任何报错。

因此,最终解决办法就是更换gcc版本。

下载和切换gcc的版本方法

首先添加ppa到库:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

sudo apt-get update

sudo apt-cache search gcc-4.*

# 安装gcc/g++

sudo apt-get install gcc-4.4

# 手工更换gcc软连接

cd /usr/bin

sudo ln -s gcc-4 gccsudo apt-cache search gcc-4.*

# 安装gcc/g++

sudo apt-get install gcc-4.4

# 手工更换gcc软连接

cd /usr/bin

sudo ln -s gcc-4 gcc

linux2.6 source 编译环境

ubuntu14.04 / (ubuntu16.04测试也编译成功,因此觉得和ubuntu版本、内核版本没多大关系)

gcc4.4

gcc --version

gcc (Ubuntu/Linaro 4.4.7-8ubuntu1) 4.4.7

Copyright (C) 2010 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

uname -a

Linux ubuntu 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

正常的编译步骤如下:

wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.1.tar.gz -O linux-2.6.32.1.tar.gz

tar zxvf linux-2.6.32.1.tar.gz

cd linux-2.6.32.1

make i386_defconfig

make -j4

a9a755fe0522862b1af8a987532b703c.png

PS: 在ubuntu16.04上编译时遇到了一个小问题,是由于perl版本过高导致的,参考这里的错误二:

https://blog.csdn.net/think_ycx/article/details/80740028

0x02 编译linux4.10源码

linux source 4.10 编译环境

同样,编译linux source 4.10时,使用的gcc版本使用的是gcc 5.5.0,在ubuntu16.04上编译成功。

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.10.6.tar.gz -O linux-4.10.6.tar.gz

tar zxvf linux-4.10.6.tar.gz

cd linux-4.10.6

make defconfig

make -j4

0d1065523c1b24dfee064ede67d69cc6.png

参考:

1. https://askubuntu.com/questions/873278/linux-kernel-version-and-gcc-version-match

2. gcc4.5 version成功编译

http://www.cnblogs.com/QuLory/archive/2012/09/27/2706429.html

3. 编译gcc

http://blog.cuicc.com/blog/2010/08/22/install-gcc-4-5-1-in-debian-lenny/

4. http://staff.ustc.edu.cn/~xlanchen/ULK2011Spring/slides/2_2build+run+gdb%20linux-2.6.26.pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值