在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 364|回复: 13

EDA 软件所使用的库分析_P1

[复制链接]
发表于 昨天 16:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 LuckyCoCo 于 2025-8-28 16:06 编辑

EDA 软件(如 Siemens、Synopsys、Cadence)在 Linux 下运行通常需要一系列特定的库文件,其中最主要的是 32 位兼容库和一些 X11 图形界面相关的库。这是因为很多 EDA 工具的遗留代码,特别是用户界面部分,仍然使用 32 位架构,并且依赖于传统的 X11 显示系统。
以下是对这些库的详细分析:

1. C/C++ 运行时库
这是所有程序运行的基础。许多 EDA 工具的旧组件是 32 位的,所以需要 32 位的 C/C++ 运行时库。
  • glibc.i686: 包含了核心的 C 语言库,是几乎所有 32 位程序运行所必需的。其中最重要的文件是 ld-linux.so.2,这是 32 位动态链接器。
  • libstdc++.i686: 包含了 C++ 标准库,许多用 C++ 编写的 EDA 工具核心模块都需要它。

2. X11 图形界面库
许多 EDA 工具的图形用户界面 (GUI) 是基于传统的 X11 系统开发的,需要相应的库来渲染界面。
  • libX11.i686: X Window System 的核心库。
  • libXext.i686: X 扩展库,为 X11 提供了额外的功能。
  • libXmu.i686: X 杂项实用程序库,提供了一些常用的 X11 编程函数。
  • libXt.i686: X 工具集,为更高级的 GUI 开发提供了框架。
  • libXft.i686: 字体渲染库,用于显示平滑字体。
  • libXp.i686: 打印扩展库,用于支持 X11 打印。
  • libXtst.i686: X 测试扩展库,提供键盘和鼠标事件模拟功能。
  • libXrender.i686: 渲染扩展库,用于加速图形渲染。

3. Motif 和 OpenGL 库
一些老旧或特定的 EDA 工具会使用 Motif 或 OpenGL 库。
  • libMesa.i686 或 libGLU.i686: 用于 OpenGL 图形渲染。
  • libMesa-libGLU.i686: Mesa 3D 图形库,提供了 OpenGL 实现。
  • libXm.i686: Motif 库,这是一个经典的 GUI 工具包。

4. 其他通用库
根据不同的工具和功能,还可能需要其他一些库,例如:
  • libexpat.i686: XML 解析器库。
  • libncurses.i686: 用于命令行界面的库。
  • libfontconfig.i686: 字体配置库。
  • libjpeg-turbo.i686, libpng.i686: 图像处理库。


安装EDA软件过程中解决库依赖的一般思路


对于检查 Linux 下 EDA 软件(如 Siemens、Synopsys、Cadence)的库依赖性,并解决相关问题,有一个通用的调试思路,可以从最常见的错误入手,逐步深入排查。


1. 初始检查与错误现象
通常,当缺少库时,你会在尝试启动软件时看到以下几种错误:
  • No such file or directory:这个错误非常具有迷惑性。它通常不是指可执行文件本身不存在,而是 程序所需的动态链接器或某个核心库文件不存在。例如,一个64位系统上的32位程序需要32位链接器,如果缺少它就会报这个错。
  • error while loading shared libraries: libxxx.so.x: cannot open shared object file:这是最直接的错误,明确告诉你缺少哪个特定的共享库(.so 文件)。
  • ... not a dynamic executable:这个错误通常意味着 ldd 命令认为你试图检查的文件不是一个动态链接的二进制可执行文件。它可能是一个脚本,或者是一个静态链接的二进制文件。



2. 调试思路与步骤
以下是解决这类问题的通用调试流程:

步骤一:使用 file 命令识别文件类型
首先,用 file 命令检查你想运行的程序文件(例如 xrun、virtuoso)的类型。
Bash

file <your_eda_executable>


  • 如果结果是 ASCII text 或 script:这说明它是一个脚本文件。ldd 命令无法检查脚本的依赖。你需要查看脚本内容,找到它实际调用的二进制程序,然后对那个二进制文件进行后续的检查。
  • 如果结果是 ELF 32-bit LSB executable:这表明它是一个32位程序。这是最常见的情况,意味着你需要在64位系统上安装相应的32位兼容库。
  • 如果结果是 ELF 64-bit LSB executable:这说明它是一个64位程序。如果它还报错,那么它可能缺少64位的库。


步骤二:使用 ldd 命令检查库依赖
对你识别出的二进制可执行文件使用 ldd 命令,它会列出该程序所需的所有动态库。
Bash

ldd <your_eda_executable_file>


  • 如果 ldd 正常运行并显示 not found:这表示你缺少某个库。你需要安装它。
  • 如果 ldd 返回 not a dynamic executable:这通常意味着它是一个32位可执行文件,而你的64位 ldd 无法识别它。解决办法是先安装32位动态链接器,通常是 glibc.i686 或 libc6:i386。安装后,再运行 ldd 就可以看到正确的依赖列表了。


步骤三:根据 ldd 结果安装缺失的库
当 ldd 列出缺失的库后,你需要找到哪个软件包提供了这个库。
  • 确定包管理器

    • RHEL/CentOS/Rocky/AlmaLinux 使用 dnf 或 yum。
    • Debian/Ubuntu 使用 apt-get。

  • 搜索提供库的包

    • 对于 RHEL/CentOS,使用 sudo yum provides <lib_name> 或 sudo dnf provides <lib_name>。
    • 对于 Debian/Ubuntu,使用 apt-file search <lib_name>(可能需要先安装 apt-file)或 apt-cache search <lib_name>。

  • 安装软件包:根据搜索结果,使用相应的包管理器安装正确的软件包。记得添加 .i686 或 :i386 后缀来安装32位版本。

例如,如果 ldd 提示 libXp.so.6 not found:
  • 在RHEL/CentOS上,你可以运行 sudo yum install libXp.i686。
  • 在Debian/Ubuntu上,你可以运行 sudo apt-get install libxp6:i386。


步骤四:解决特定或版本问题
有些问题可能不仅仅是库缺失那么简单,例如:
  • 版本不兼容:某些旧版 EDA 工具需要特定版本的库,如 libstdc++.so.5 或 libdb-4.7.so。在RHEL上,这通常由 compat-libstdc++-33.i686 和 compat-db47.i686 等兼容性包提供。在Debian上,则是 libstdc++5:i386 等。
  • 安装程序问题:安装工具本身(如 Cadence 的 IScape)可能需要一些额外的工具,如 xterm、ksh、tcsh 或 java。
  • 操作系统检查:一些软件在不支持的操作系统上会报错,可以通过设置环境变量 export W3264_NO_HOST_CHECK=1 来绕过。

按照上述步骤,一般可以系统性地诊断和解决绝大多数由于库依赖引起的 EDA 软件启动问题。


发表于 昨天 16:51 | 显示全部楼层
thanks
回复 支持 反对

使用道具 举报

发表于 昨天 16:59 | 显示全部楼层
thanks
回复 支持 反对

使用道具 举报

发表于 昨天 18:01 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

发表于 昨天 19:05 | 显示全部楼层
very good indeed
回复 支持 反对

使用道具 举报

发表于 昨天 19:26 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

发表于 昨天 19:34 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

发表于 昨天 19:36 | 显示全部楼层
感谢大佬的解读,感谢分享。
回复 支持 反对

使用道具 举报

发表于 昨天 20:01 | 显示全部楼层
感謝分享
回复 支持 反对

使用道具 举报

发表于 昨天 20:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-8-29 09:13 , Processed in 0.018799 second(s), 4 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表