从源码编译安装 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 删除旧版,避免冲突。

相关推荐
xsd202411184 小时前
3D双目相机 vs 面阵激光雷达:机器人的“眼睛“到底怎么选?
人工智能
2601_965619695 小时前
把开源项目Changelog自动做成更新视频,AI工作流
人工智能·开源·音视频
Json____6 小时前
PHP 突发严重安全漏洞,AI 开始改变网络安全的攻防方式
人工智能·web安全·php·it学习·wwwoop.com
fxss6 小时前
我用AI给娃写了个拼音闯关大冒险
人工智能
驭渊的小故事8 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
北京中科新远科技8 小时前
高速光链路健康检查实战:DOM、FEC、误码与压力回归
人工智能·数据挖掘·回归
火山引擎和TA的超级拍档们8 小时前
超级拍档・光影新生|火山引擎 AIGC 主题峰会回顾
人工智能
冬奇Lab8 小时前
一天一个开源项目(第245篇):Raven —— ‘Harness 的 Harness‘,把 Claude Code、Codex 等智能体编排起来并让它递归自我改进
人工智能·开源·资讯
工业视觉老A8 小时前
攻克牙膏朝向人工分拣痛点,AI 视觉检测保障包装工序稳定
人工智能·计算机视觉·视觉检测