【Linux】gcc从源码编译安装,修改源码,验证修改的源码

前阵子电脑使用的win10,win10过几天就让升级,烦得不行。

然后把操作系统切换到ubuntu24的样子,然后也是让升级,又烦的不行,然后切换到ubuntu server版本,感觉用起来要舒服些了,至少不会天天让升级。

回到标题,前面编译linux 内核,发现其实在电脑硬件日常使用的内核源代码数量,估计也就使用几千个,如果有些人想学习linux内核源代码太不方便,如果才能知道gcc编译时用到了哪些c文件或头文件,就需要修改gcc编译的源代码了,尤其是头文件,各种递归依赖。

当前的进展是这样的:

其实编译gcc编译器源代码不难,搞环境比较烦。

第1个箭头和2个箭头表示:新的编译器路径和源代码是gcc 14.2.0的

第3个箭头是用新编译的gcc编译/home/j/a.c这个c代码

第4个箭头是指编译源代码时打印的执行gcc编译器源代码的gcc目录下gcc.cc这个源代码的8260行,main函数,后边是编译器所在位置,第2个参数是编译的a.c所在的路径

修改的代码,就是添加了一行打印日志,用于测试功能能不能使用:

其实就是gcc在执行的时候以追加的方式打开/log.txt的这个文件,然后写入日志

现在看代码还没有找到解析头文件那里去,慢慢看源码吧,到这里也算是有一定的进展。

这里有一点需要注意,在修改gcc源代码的时候不能直接在源文件添加pringf()这类的操作,因为make时会有很多测试用例,添加了printf会导致不通过,好像gcc的源代码比内核源代码数量还要多。

这类大项目的编译框架很复杂,如果要学习Makefile啥的,要学的东西太多了。

感谢阅读。

相关推荐
小Tomkk11 分钟前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
赌博羊11 分钟前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found
linux·运维·gnu
木卫二号Coding13 分钟前
第七十九篇-E5-2680V4+V100-32G+llama-cpp编译运行+Qwen3-Next-80B
linux·llama
getapi22 分钟前
Ubuntu 22.04 服务器的系统架构是否为 amd64 x86_64
linux·服务器·ubuntu
消失的旧时光-194339 分钟前
Linux 入门核心命令清单(工程版)
linux·运维·服务器
艾莉丝努力练剑1 小时前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
小天源1 小时前
Cacti在Debian/Ubuntu中安装及其使用
运维·ubuntu·debian·cacti
Trouvaille ~1 小时前
【Linux】TCP Socket编程实战(一):API详解与单连接Echo Server
linux·运维·服务器·网络·c++·tcp/ip·socket
芷栀夏1 小时前
深度解析 CANN 异构计算架构:基于 ACL API 的算子调用实战
运维·人工智能·开源·cann
全栈工程师修炼指南1 小时前
Nginx | stream 四层反向代理:SSL、PREREAD 阶段模块指令浅析与实践
运维·网络·网络协议·nginx·ssl