3. 操作系统与依赖:Linux系统选择与基础依赖库安装

好,咱们正式开始搭建环境。这一节我打算聊聊操作系统选型和那些必须装的基础依赖库。说实话,很多新手在这一步就卡住了——系统装完发现缺这缺那,编译报错一脸懵。别急,我带你一步步搞定。

核心观点:操作系统是仿真环境的根基,依赖库是地基里的钢筋。选错了或者装漏了,后面全白搭。

3.1 Linux发行版怎么选?Ubuntu还是CentOS?

我个人习惯用Ubuntu。为什么?因为硅光领域的EDA工具,比如Lumerical、Ansys Lumerical、还有开源的Meep、FDTD求解器,对Ubuntu的支持最友好。你想想看,这些工具的开发团队自己就用Ubuntu,出问题社区也活跃。

CentOS呢?也不是不能用。我记得几年前在一个项目里,客户那边强制要求CentOS 7,结果装一个光学仿真库折腾了两天——依赖版本太旧,得手动编译一堆东西。嗯,从那以后我尽量劝团队用Ubuntu。

特性 Ubuntu 20.04/22.04 LTS CentOS 7/8
软件包更新速度 快,apt源丰富 慢,追求稳定
EDA工具兼容性 优秀,主流支持 一般,需额外配置
社区活跃度 高,问题容易搜到 较低,企业级为主
新手友好度 中等

我的建议:如果你刚入门,直接上Ubuntu 22.04 LTS。别纠结。我在项目中遇到过用CentOS的同事,最后都偷偷换回了Ubuntu。

3.2 基础依赖库安装——一个都不能少

装完系统,第一件事就是装这些基础工具。说白了,它们是编译器的编译器、构建工具的构建工具。没有它们,你连个Hello World都跑不起来。

3.2.1 gcc, g++, make, cmake

这四个是C/C++编译和构建的核心。硅光仿真里很多底层库(比如PETSc、SLEPc、还有各种FDTD引擎)都是用C++写的。你想想看,没有g++,你怎么编译它们?

安装命令很简单:

sudo apt update
sudo apt install -y build-essential
sudo apt install -y cmake

build-essential这个包会帮你装好gcc、g++、make以及一些头文件。cmake需要单独装。我记得有一次我偷懒没装cmake,结果编译一个光学模式求解器时卡在CMakeLists.txt那一步——嗯,老老实实补上了。

避坑指南:我曾经遇到过系统自带的gcc版本太老(比如gcc-7),导致某些新库的C++17特性编译不过。建议装完后检查版本:

gcc --version
g++ --version
cmake --version

如果版本低于gcc-9,建议升级。Ubuntu 22.04默认gcc-11,够用。

3.2.2 python3 和 pip

Python在硅光领域太重要了。数据后处理、脚本自动化、调用仿真API,甚至有些工具(比如开源的lumopt)本身就是Python写的。所以python3和pip必须装好。

sudo apt install -y python3 python3-pip python3-venv

这里我多说一句:千万别用系统自带的pip直接装包。我建议用虚拟环境。为什么呢?因为不同项目可能依赖不同版本的numpy、scipy,混在一起会出问题。我在一个项目里就吃过这个亏——装了一个光学库,结果把系统级的matplotlib搞坏了,重装了三次系统才解决。

我的习惯:每个项目建一个虚拟环境:

python3 -m venv my_sim_env
source my_sim_env/bin/activate

这样隔离干净,出错了删掉重来就行。

3.3 知识体系一览

为了让你对整个依赖关系有个直观认识,我画了一张图。这张图展示了操作系统、基础依赖、以及上层仿真工具之间的层次关系。

硅光工艺仿真环境依赖层次 操作系统层 Ubuntu 22.04 LTS / CentOS 7/8 基础依赖库层 gcc, g++, make, cmake, python3, pip build-essential, python3-venv 仿真工具与库层 Lumerical / Ansys Lumerical / Meep / FDTD求解器 PETSc / SLEPc / lumopt / 光学模式求解器 Python库:numpy, scipy, matplotlib, h5py 你的硅光工艺仿真脚本

从这张图你可以看到,操作系统在最底层,基础依赖库是承上启下的关键层。没有这一层,上面的仿真工具根本跑不起来。所以别嫌麻烦,这一步值得花时间。

3.4 验证安装是否成功

装完之后,我习惯跑一个快速验证脚本。这样心里踏实。

# 检查C++编译器
echo "int main(){ return 0; }" > test.cpp
g++ test.cpp -o test && echo "g++ OK"
rm test test.cpp

# 检查Python和pip
python3 -c "import numpy; print('numpy version:', numpy.__version__)"
python3 -c "import scipy; print('scipy version:', scipy.__version__)"

如果numpy和scipy还没装,用pip装一下:

pip install numpy scipy matplotlib h5py

重要提醒:h5py这个库在硅光仿真里经常用到——很多仿真结果都存成HDF5格式。我建议提前装好,省得到时候抓瞎。

3.5 我踩过的坑

最后分享一个真实经历。有一次我在一个新服务器上搭环境,系统是Ubuntu 20.04。我按老习惯直接sudo apt install build-essential,然后装python3。结果编译一个光学仿真库时,报错说找不到Python.h。查了半天才发现——python3-dev没装!

所以这里补一句:如果你要编译带Python绑定的C++库,记得装:

sudo apt install -y python3-dev

嗯,这个坑我替你们踩过了。你们就别再踩了。

一句话总结:Ubuntu + build-essential + cmake + python3 + pip + python3-venv + python3-dev,这七样装齐了,基础环境就稳了。后面装什么仿真工具都不慌。


公众号:蓝海资料掘金营,微信deep3321