linux5.x编译docker

dockerfile

FROM ubuntu:focal

COPY ./sources.list /etc/apt/sources.list

RUN chmod 777 /tmp

RUN apt update

RUN apt install -y build-essential ncurses-dev python3 bison flex libssl-dev bc && ln -s /bin/python3 /bin/python

RUN apt install u-boot-tools -y

其中sources.list是apt依赖源,我将宿主的文件拷至当前编译路径下,由dockerfile导入镜像

ubuntu:focal这个镜像是编译适用的,不应该用ubuntu:latest,它会产生apt依赖问题

 u-boot-tools用于arm相关编译uboot引导加载

镜像编译

docker build -t kbuild:v1 .

 参数可以自行更换,包括镜像名和编译路径。

之后运行容器

docker run -it -v /home/work:/share kbuild:v1

创建容器,并映射宿主文件夹给容器 

环境变量

如果编译时依赖工具链,使用export增加可执行文件搜索路径:

newpath={这里输入工具链路径}

export PATH=$PATH:${newpath}

这些工作可以考虑加入到dockerfile尾部,好处是产生一层layer并能让其他编译链复用前一级依赖layer。

配置处理

如果需要交叉编译,需要在arch/xxx/目录下找到对应处理器架构的配置。

如果是想直接编译当前运行机的内核,可以去宿主机目录/proc/config.gz下拷贝配置文件。

然后执行配置类相关建立预处理编译命令,分别是menu界面模式和自动默认模式:

make menuconfig

make defconfig

menuconfig是一种UI选项型工具,所有的配置都基于内核的kconfig系统,支持选项、关系依赖、层级等元素。

编译

如果非交叉编译,则直接完成如下:

make

 交叉还需要指定编译器CROSS_COMPILE和ARCH两个变量,还可以通过指定-j参数多处理器参与编译

 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值