有的,KLayout 支持从源码编译。以下是详细的源码编译步骤:
一、安装依赖
bash
sudo apt update
sudo apt install -y build-essential git
# Qt 依赖(KLayout 需要 Qt5 或 Qt6)
sudo apt install -y qtbase5-dev qttools5-dev libqt5svg5-dev \
libqt5xmlpatterns5-dev qtmultimedia5-dev
# Ruby 支持(OpenROAD 流程需要)
sudo apt install -y ruby ruby-dev
# Python 支持
sudo apt install -y python3 python3-dev libpython3-dev
# 其他依赖
sudo apt install -y libz-dev zlib1g-dev libgit2-dev chrpath txt2man
二、克隆源码
bash
cd ~/tmp01
git clone https://github.com/KLayout/klayout.git
cd klayout
# 查看最新版本
git tag | tail -5
# 例如切换到 0.30.10
git checkout 0.30.10
三、编译
KLayout 提供了 build.sh 脚本,使用方式如下:
bash
cd ~/tmp01/klayout
# 查看帮助
./build.sh -h
# 标准编译(Release 模式,使用所有 CPU 核心)
./build.sh -j$(nproc)
# 不带 Qt 绑定(编译更快,但脚本无法创建 GUI)
./build.sh -without-qtbinding -j$(nproc)
# 指定 Python 版本
./build.sh -python /usr/bin/python3 -j$(nproc)
编译完成后,二进制文件在 bin-release/ 目录下。
四、安装
bash
cd ~/tmp01/klayout
# 方式 1:直接复制到系统目录
sudo cp -r bin-release/* /usr/local/bin/
sudo cp -r lib-release/* /usr/local/lib/ 2>/dev/null || true
# 方式 2:创建软链接
sudo ln -sf $(pwd)/bin-release/klayout /usr/local/bin/klayout
# 验证
klayout -v
# 应显示类似:KLayout 0.30.10
五、OpenROAD 流程中使用
bash
cd ~/tmp01/OpenROAD-flow-scripts/flow
# 确保 klayout 在 PATH 中
which klayout
# 重新运行(从 GDS 合并步骤继续)
make YOSYS_EXE=/usr/local/bin/yosys OPENROAD_EXE=$(which openroad)
六、编译选项参考
| 选项 | 说明 |
|---|---|
-j<N> |
并行编译,使用 N 个核心 |
-without-qtbinding |
禁用 Qt 绑定(减少编译时间) |
-python <path> |
指定 Python 解释器路径 |
-ruby <path> |
指定 Ruby 解释器路径 |
-prefix <path> |
安装前缀 |
-debug |
编译 Debug 版本 |
七、常见问题
Q:编译时间多久?
A:在 8 核机器上约 10-20 分钟。不带 Qt 绑定会快很多。
Q:可以不带 GUI 编译吗?
A:可以,加上 -without-qtbinding,但 OpenROAD 的 GDS 合并脚本通常不需要 GUI,所以没问题。
Q:与 apt 安装的 KLayout 冲突吗?
A:建议先 sudo apt remove klayout 删除旧版,避免冲突。