从源码编译安装 KLayout

有的,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 删除旧版,避免冲突。

相关推荐
jeffsonfu1 小时前
从LeNet到EfficientNet:经典CNN架构二十年演进史
人工智能·架构·cnn
2601_962860151 小时前
对话Soul创始人张璐团队解读AI布局,以情绪交互能力拓展应用场景
人工智能
王中阳Go1 小时前
业务代码凭什么不能直接调 Agent?——我在律所 AI 项目里做的 Harness 运行时治理
人工智能·后端·程序员
l1258652 小时前
# RAG上线评估指标体系:六大核心指标与压测实战全解析
数据库·人工智能·python·mysql·langchain·milvus
Python 实战手记2 小时前
微信公众号跨主体迁移变更审核流程实操解析:场景条件、公证材料规范、避坑要点与校验脚本实现
人工智能
东方佑2 小时前
INT8-X 推理引擎观察记
人工智能
william_yangshun2 小时前
【AI Agent 实战】cindy 中文版:开箱即用的开源 AI 代理上手指南
人工智能·开源
我命由我123452 小时前
人脸识别 - 人脸识别选帧
java·人工智能·python·算法·安全·java-ee·人脸识别
Ai-_Man2 小时前
豆包收藏夹能批量导出吗?从底层逻辑拆解「AI导出鸭」如何解构这一技术难题
人工智能·ai·小程序