在 Linux 下查看 C++ 源码(系统库、STL、内核、第三方库等),不同场景方法不一样。下面按常见需求给你一个实用指南。
STL 基本都是头文件实现,直接看 .h / .hpp
locate iostream
常见路径:
/usr/include/c++/11/
/usr/include/c++/11/bits/
示例:
vim /usr/include/c++/11/iostream
想看 vector:
vim /usr/include/c++/11/vector
想看内部实现(如内存管理):
vim /usr/include/c++/11/bits/stl_vector.h
sudo apt install libstdc++-11-dev
或源码:
sudo apt install libstdc++-11-source
然后:
cd /usr/src/libstdc++*
sudo apt install glibc-source
解压:
cd /usr/src/glibc/
tar xf glibc-*.tar.xz
常见文件:
sysdeps/unix/sysv/linux/
stdio-common/
man 2 open
源码级:
git clone https://github.com/torvalds/linux
sudo apt install linux-source
或:
git clone https://github.com/torvalds/linux.git
fs/ 文件系统
net/ 网络
mm/ 内存管理
kernel/ 进程调度
include/ 头文件
apt source libopencv-dev
apt source libboost-all-dev
git clone https://github.com/xxx/xxx.git
code .
sudo apt install ctags
ctags -R .
在 vim 中:
Ctrl + ]
Ctrl + t
sudo apt install clangd
配合:
gdb ./a.out
start
step
如果没源码:
sudo apt install libc6-dbg
strace ./a.out
❌ 以为 STL 是 .so
✅ 实际是 头文件模板
❌ 只看二进制
✅ 源码在 /usr/include 或 GitHub
iostream → ostream → streambufvector → allocatorpthread → glibc → 内核 futex如果你愿意,可以告诉我:
我可以给你具体文件 + 行号级指引。