问题
- 编译Linux内核时,使用make导致每次均全量编译的问题,每次编译耗费大量时间。各种搜索之后发现是Makefile版本和Ubuntu版本的问题(猜测)
- 安装makefile 版本glob/glob.c: : undefined reference问题
- /usr/bin/mkdir: 无法创建目录 "/usr/local/share/man/man1": 文件已存在
解决方法
我使用的:Ubuntu22.04 + make 4.3(使用make -v查看make版本)
要降低makefile版本,重新下载安装makefile其他版本
重新安装make4.1版本,下面是安装更改流程:
- 下载官网地址:Index of /gnu/make
- 解压makefile压缩包成功
- 进入解压的目录中,按顺序执行下面的命令
./configure
./build.sh
./build.sh 步骤会出现报错:
glob/glob.c:1269: undefined reference to `__stat'
或者
glob/glob.c:1269: undefined reference to `__alloca'
解决方法:
进入glob/glob.c文件,在第211和232注释掉。
输入指令 vi glob/glob.c
添加
#define __alloca alloca
#define __stat stat
make
sudo make install
在执行sudo make install 会有新报错:
/usr/bin/mkdir: 无法创建目录 "/usr/local/share/man/man1": 文件已存在
把文件删掉 ,再重新运行 sudo make install,像这种不报错就差不多成功了
make -v
查看是否按照成功
此时再去重新编译内核,第一次会全部编译,修改部分文件就会只编译所修改的文件