[{"data":1,"prerenderedAt":968},["ShallowReactive",2],{"series:index":3,"content:\u002Fubuntu\u002Fsynopsys":119,"surround:\u002Fubuntu\u002Fsynopsys":965},[4,9,14,19,24,29,34,39,44,49,54,59,64,69,74,79,84,89,94,98,102,106,110,114],{"stem":5,"path":6,"title":7,"date":8},"posts\u002F2024\u002FMathematical-Modeling","\u002F2024\u002F09\u002F22\u002FMathematical-Modeling","数学建模（课程）","2024-09-22 19:07:42",{"stem":10,"path":11,"title":12,"date":13},"posts\u002F2024\u002FMumerical-Analysis","\u002F2024\u002F09\u002F19\u002FMumerical-Analysis","数值分析方法","2024-09-19 17:12:56",{"stem":15,"path":16,"title":17,"date":18},"posts\u002F2024\u002FXZZD-Aquire-Score","\u002F2024\u002F10\u002F23\u002FXZZD-Aquire-Score","XZZD_Aquire_Score","2024-10-23 15:08:30",{"stem":20,"path":21,"title":22,"date":23},"posts\u002F2024\u002Felec-design-contest-2024","\u002F2024\u002F07\u002F07\u002Felec-design-contest-2024","东四——隐秘的角落","2024-07-07 11:44:32",{"stem":25,"path":26,"title":27,"date":28},"posts\u002F2024\u002Fengineering-drawing-notes","\u002F2024\u002F06\u002F30\u002Fengineering-drawing-notes","工程图学期末复习","2024-06-30 21:02:09",{"stem":30,"path":31,"title":32,"date":33},"posts\u002F2024\u002Fengineering-training","\u002F2024\u002F09\u002F17\u002Fengineering-training","工程训练","2024-09-17 21:40:26",{"stem":35,"path":36,"title":37,"date":38},"posts\u002F2024\u002Fmechanics","\u002F2024\u002F07\u002F08\u002Fmechanics","about力学","2024-07-08 14:14:07",{"stem":40,"path":41,"title":42,"date":43},"posts\u002F2024\u002Fsolid-state-physics","\u002F2024\u002F09\u002F11\u002Fsolid-state-physics","固体物理基础","2024-09-11 19:15:26",{"stem":45,"path":46,"title":47,"date":48},"posts\u002F2025\u002F25GElecDesignContest","\u002F2025\u002F08\u002F26\u002F25GElecDesignContest","纪念最好的大二五组","2025-08-26 11:06:33",{"stem":50,"path":51,"title":52,"date":53},"posts\u002F2025\u002FComplex-Analysis","\u002F2025\u002F01\u002F21\u002FComplex-Analysis","复变函数与积分变换","2025-01-21 13:23:59",{"stem":55,"path":56,"title":57,"date":58},"posts\u002F2025\u002FEngineering-Innovation","\u002F2025\u002F01\u002F20\u002FEngineering-Innovation","工程实践与创新能力大赛","2025-01-20 22:20:59",{"stem":60,"path":61,"title":62,"date":63},"posts\u002F2025\u002FFundamentalsMarxism","\u002F2025\u002F06\u002F06\u002FFundamentalsMarxism","马克思主义基本原理","2025-06-06 00:22:45",{"stem":65,"path":66,"title":67,"date":68},"posts\u002F2025\u002FMaoTheory","\u002F2025\u002F06\u002F12\u002FMaoTheory","毛概","2025-06-12 14:58:16",{"stem":70,"path":71,"title":72,"date":73},"posts\u002F2025\u002FMicroelectronic-Circuits","\u002F2025\u002F01\u002F20\u002FMicroelectronic-Circuits","电基小子","2025-01-20 23:02:49",{"stem":75,"path":76,"title":77,"date":78},"posts\u002F2025\u002FProbability-Theory","\u002F2025\u002F01\u002F21\u002FProbability-Theory","概率论与数理统计","2025-01-21 12:52:11",{"stem":80,"path":81,"title":82,"date":83},"posts\u002F2025\u002FTOP","\u002F2025\u002F01\u002F20\u002FTOP","置顶","3025-01-20 21:53:36",{"stem":85,"path":86,"title":87,"date":88},"posts\u002Fubuntu\u002F1.config","\u002Fubuntu\u002Fconfig","ubuntu 系统配置","2025-08-26 19:38:06",{"stem":90,"path":91,"title":92,"date":93},"posts\u002Fubuntu\u002F2.cadence\u002F1.mmsim","\u002Fubuntu\u002Fcadence\u002Fmmsim","在 Ubuntu 24.04 上安装 Cadence MMSIM 15.1 的兼容性问题","2026-09-09 14:06:40",{"stem":95,"path":96,"title":97,"date":93},"posts\u002Fubuntu\u002F2.cadence\u002F2.innovus","\u002Fubuntu\u002Fcadence\u002Finnovus","Innovus安装",{"stem":99,"path":100,"title":101,"date":93},"posts\u002Fubuntu\u002F2.cadence\u002Findex","\u002Fubuntu\u002Fcadence","Ubuntu24.04安装Cadence 系列软件",{"stem":103,"path":104,"title":105,"date":93},"posts\u002Fubuntu\u002F3.synopsys","\u002Fubuntu\u002Fsynopsys","Ubuntu 24.04 安装 Synopsys",{"stem":107,"path":108,"title":109,"date":93},"posts\u002Fubuntu\u002F4.vivado","\u002Fubuntu\u002Fvivado","Ubuntu 24.04 安装 Vivado 2020.1",{"stem":111,"path":112,"title":113,"date":93},"posts\u002Fubuntu\u002F5.migrate","\u002Fubuntu\u002Fmigrate","硬盘迁移系统",{"stem":115,"path":116,"title":117,"date":118},"posts\u002Fubuntu\u002Findex","\u002Fubuntu","Ubuntu装进移动硬盘","2025-08-25 19:38:06",{"id":120,"title":105,"body":121,"categories":932,"date":93,"description":934,"draft":935,"extension":936,"hideInArchive":937,"hideInList":937,"image":938,"meta":939,"navigation":937,"path":104,"permalink":938,"published":938,"readingTime":941,"recommend":938,"references":946,"seo":953,"sitemap":954,"stem":103,"tags":958,"type":962,"updated":963,"__hash__":964},"content\u002Fposts\u002Fubuntu\u002F3.synopsys.md",{"type":122,"value":123,"toc":904},"minimark",[124,128,150,154,161,169,179,192,198,206,209,212,218,228,231,235,241,248,251,257,265,268,272,286,316,321,327,343,347,354,359,365,375,379,386,399,403,413,426,432,436,443,447,453,457,471,475,481,485,492,496,502,506,513,522,535,541,545,560,564,570,574,591,599,605,649,660,664,675,683,686,690,729,735,741,751,757,760,800,803,821,825,831,834,837,843,846,856,885,888,891,898],[125,126,127],"p",{},"Synopsys 2024 系列工具是用旧版 glibc 编译的，在 Ubuntu 24.04 上直接跑会遇到符号不匹配等一堆问题。本文的思路是：用 Distrobox（底层是 podman）起一个 Ubuntu 20.04 容器，工具装在宿主机和容器共享的 HOME 目录下，在容器里运行；license 服务则留在宿主机上跑。",[125,129,130,131,135,136,143,144,149],{},"安装器本身的操作（",[132,133,134],"code",{"code":134},"SynopsysInstaller","、SCL、生成 license、配置环境变量）和 ",[137,138,142],"a",{"href":139,"rel":140},"https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F1899035861158454466",[141],"nofollow","Ubuntu 22.04 上安装 VCS + Verdi 的知乎教程","是一样的，这里不再重复；缺库、FlexLM 这类通用问题，",[137,145,148],{"href":146,"rel":147},"https:\u002F\u002Fverdvana.cn\u002F_posts\u002F2021-11-13-Synopsys-EDA-Tools%E5%AE%89%E8%A3%85%E4%B8%AD%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AE%E9%A2%98%E5%8F%8A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95\u002F",[141],"Verdvana 的这篇总结","也整理得很全。本文只记录容器化的做法和 24.04 上额外踩到的坑。",[151,152,153],"h2",{"id":153},"需要的文件",[125,155,156,157,160],{},"Design Compiler 依赖 ",[132,158,159],{"code":159},"libpng12.so.0","，而 Ubuntu 16.04 之后的软件源就不再提供 libpng12 了。这里放一份可以直接用的（x86_64，libpng 1.2.54）：",[125,162,163,164,168],{},"直接点这里下载：",[137,165,159],{"href":166,"download":159,"target":167},"\u002Ffiles\u002Flibpng12.so.0","_blank","，或者在容器里用 wget 拉下来并校验：",[170,171,177],"pre",{"className":172,"code":174,"language":175,"meta":176},[173],"language-Bash","wget https:\u002F\u002Fxw-soleil.github.io\u002Ffiles\u002Flibpng12.so.0\nsha256sum libpng12.so.0\n# 3637148c97e858efda3a229f8c2f0e9d91f1b5d26eabe7d52e0e84fa30e3bf06\n","Bash","",[132,178,174],{"__ignoreMap":176},[125,180,181,182,187,188,191],{},"这个文件提取自 Ubuntu 16.04（xenial）的官方软件包 ",[137,183,186],{"href":184,"rel":185},"https:\u002F\u002Flaunchpad.net\u002Fubuntu\u002Fxenial\u002Famd64\u002Flibpng12-0",[141],"libpng12-0 1.2.54-1ubuntu1","，和 deb 里的 ",[132,189,190],{"code":190},"libpng12.so.0.54.0"," 逐字节一致。不想用博客上的文件的话，也可以自己从 deb 里解出来：",[170,193,196],{"className":194,"code":195,"language":175,"meta":176},[173],"wget https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fubuntu\u002Fpool\u002Fmain\u002Flibp\u002Flibpng\u002Flibpng12-0_1.2.54-1ubuntu1.1_amd64.deb\ndpkg-deb -x libpng12-0_1.2.54-1ubuntu1.1_amd64.deb libpng12\nls -l libpng12\u002Flib\u002Fx86_64-linux-gnu\u002F   # libpng12.so.0 -> libpng12.so.0.54.0\n",[132,197,195],{"__ignoreMap":176},[125,199,200,201,205],{},"安装到系统库路径的步骤见下文",[137,202,204],{"href":203},"#%E9%97%AE%E9%A2%98-4%E7%BC%BA%E5%A4%B1-libpng12so0","问题 4","。",[151,207,208],{"id":208},"日常使用",[125,210,211],{},"license 在宿主机，工具在容器里，所以每次分两步：",[170,213,216],{"className":214,"code":215,"language":175,"meta":176},[173],"# 1. 宿主机：加载环境并启动 license 服务\nsource ~\u002Fsynopsys\u002Fenv_synopsys_2024.sh\nlmg\n\n# 2. 进入容器，再加载一次环境，然后正常跑 vcs \u002F verdi \u002F dc_shell\ndistrobox enter synopsys-focal\nsource ~\u002Fsynopsys\u002Fenv_synopsys_2024.sh\n",[132,217,215],{"__ignoreMap":176},[125,219,220,223,224,205],{},[132,221,222],{"code":222},"lmg"," 是环境脚本里定义的别名，脚本全文见",[137,225,227],{"href":226},"#%E7%8E%AF%E5%A2%83%E8%84%9A%E6%9C%AC-env_synopsys_2024sh","下文",[151,229,230],{"id":230},"搭建容器",[232,233,234],"h3",{"id":234},"创建容器",[170,236,239],{"className":237,"code":238,"language":175,"meta":176},[173],"# 宿主机安装 distrobox + podman\nsudo apt update\nsudo apt install -y podman distrobox\n\n# 创建并进入 Ubuntu 20.04 容器\ndistrobox create -n synopsys-focal -i ubuntu:20.04\ndistrobox enter synopsys-focal\n",[132,240,238],{"__ignoreMap":176},[125,242,243,244,247],{},"distrobox 默认共享 HOME 目录，所以 ",[132,245,246],{"code":246},"~\u002Fsynopsys\u002F"," 下的工具不用复制，容器里直接可用。",[232,249,250],{"id":250},"容器内安装基础依赖",[170,252,255],{"className":253,"code":254,"language":175,"meta":176},[173],"sudo apt update\nsudo apt install -y \\\n  tcsh csh ksh bash \\\n  perl python3 gawk sed grep coreutils \\\n  make file less procps \\\n  libstdc++6 zlib1g libgcc-s1 \\\n  libncurses5 libtinfo5 \\\n  libx11-6 libxext6 libxrender1 libxt6 libxi6 libxft2 libxmu6 \\\n  libsm6 libice6 libfontconfig1 libfreetype6 \\\n  libglib2.0-0 libpng16-16 \\\n  xauth x11-apps fonts-dejavu-core\n",[132,256,254],{"__ignoreMap":176},[125,258,259,260,264],{},"后文的",[137,261,263],{"href":262},"#%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E6%89%80%E6%9C%89%E5%AE%B9%E5%99%A8%E5%86%85%E4%BE%9D%E8%B5%96","一键安装","把所有问题里用到的包合在了一起，嫌麻烦可以直接跳过去。",[151,266,267],{"id":267},"踩坑记录",[232,269,271],{"id":270},"问题-1design_vision-启动即-segfault","问题 1：design_vision 启动即 Segfault",[125,273,274,278,279,282,283,205],{},[275,276,277],"strong",{},"现象","：",[132,280,281],{"code":281},"design_vision"," 一启动就 ",[132,284,285],{"code":285},"Segmentation fault (core dumped)",[125,287,288,291,292,295,296,299,300,303,304,307,308,311,312,315],{},[275,289,290],{},"原因","：容器内 hostname（如 ",[132,293,294],{"code":294},"synopsys-focal.soleilUbuntu","）在宿主机 ",[132,297,298],{"code":298},"\u002Fetc\u002Fhosts"," 中没有对应条目。NSS 走 ",[132,301,302],{"code":302},"myhostname"," 插件，返回 ",[132,305,306],{"code":306},"fe80::%3"," 这种带 scope-id 的 IPv6 link-local 地址，DC 内部调 ",[132,309,310],{"code":310},"gethostid()"," → ",[132,313,314],{"code":314},"gethostbyname_r()"," 时没有正确处理，直接 segfault。",[125,317,318,278],{},[275,319,320],{},"修复",[170,322,325],{"className":323,"code":324,"language":175,"meta":176},[173],"# 在宿主机上添加 hostname 映射（容器内 \u002Fetc\u002Fhosts 是 bind-mount 只读的）\necho \"127.0.1.1 synopsys-focal.soleilUbuntu\" | sudo tee -a \u002Fetc\u002Fhosts\n\n# 在容器内禁用 nss-myhostname（可能也需要先 umount）\nsudo umount \u002Fetc\u002Fnsswitch.conf 2>\u002Fdev\u002Fnull\necho \"hosts: files dns\" | sudo tee \u002Fetc\u002Fnsswitch.conf\n",[132,326,324],{"__ignoreMap":176},[125,328,329,278,332,335,336,339,340,205],{},[275,330,331],{},"验证",[132,333,334],{"code":334},"getent ahosts $(hostname)"," 应返回干净的 ",[132,337,338],{"code":338},"127.0.1.1","，不再出现 ",[132,341,342],{"code":342},"fe80::...%3",[232,344,346],{"id":345},"问题-2qt-平台插件初始化失败design-vision","问题 2：Qt 平台插件初始化失败（Design Vision）",[125,348,349,278,351],{},[275,350,277],{},[132,352,353],{"code":353},"no Qt platform plugin could be initialized",[125,355,356,358],{},[275,357,320],{},"：安装 xcb 相关依赖",[170,360,363],{"className":361,"code":362,"language":175,"meta":176},[173],"sudo apt install -y libxcb-xinerama0 libxcb-icccm4 libxcb-image0 \\\n  libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 \\\n  libxcb-xfixes0 libxcb-xkb1 libxkbcommon-x11-0 libfontconfig1 \\\n  libxrender1 libxi6 libxext6 libx11-xcb1 libgl1-mesa-glx\n",[132,364,362],{"__ignoreMap":176},[125,366,367,368,371,372,205],{},"如不需要 GUI，可用命令行模式 ",[132,369,370],{"code":370},".\u002Fdc_shell","，或设置 ",[132,373,374],{"code":374},"export QT_QPA_PLATFORM=offscreen",[232,376,378],{"id":377},"问题-3终端类型警告","问题 3：终端类型警告",[125,380,381,278,383],{},[275,382,277],{},[132,384,385],{"code":385},"Cannot use command line editor for terminal type 'xterm-256color'. (UI-74)",[125,387,388,390,391,394,395,398],{},[275,389,320],{},"：启动前设置 ",[132,392,393],{"code":393},"export TERM=xterm","（已写入 ",[132,396,397],{"code":397},"env_synopsys_2024.sh","）。",[232,400,402],{"id":401},"问题-4缺失-libpng12so0","问题 4：缺失 libpng12.so.0",[125,404,405,407,408,412],{},[275,406,277],{},"：Ubuntu 16.04+ 默认只有 libpng16，DC 需要 libpng12。这个问题 ",[137,409,411],{"href":146,"rel":410},[141],"Verdvana 的文章","里也有记录。",[125,414,415,417,418,422,423,425],{},[275,416,320],{},"：按",[137,419,421],{"href":420},"#%E9%9C%80%E8%A6%81%E7%9A%84%E6%96%87%E4%BB%B6","上文","拿到 ",[132,424,159],{"code":159},"，放到系统库路径：",[170,427,430],{"className":428,"code":429,"language":175,"meta":176},[173],"sudo cp libpng12.so.0 \u002Fusr\u002Flib\u002Fx86_64-linux-gnu\u002F\nsudo chmod 755 \u002Fusr\u002Flib\u002Fx86_64-linux-gnu\u002Flibpng12.so.0\nsudo ldconfig\nldconfig -p | grep libpng12  # 验证\n",[132,431,429],{"__ignoreMap":176},[232,433,435],{"id":434},"问题-5flexlm-目录缺失","问题 5：FlexLM 目录缺失",[125,437,438,278,440],{},[275,439,277],{},[132,441,442],{"code":442},"Can't make directory \u002Fusr\u002Ftmp\u002F.flexlm, errno: 2",[125,444,445,278],{},[275,446,320],{},[170,448,451],{"className":449,"code":450,"language":175,"meta":176},[173],"sudo mkdir -p \u002Fusr\u002Ftmp\nsudo touch \u002Fusr\u002Ftmp\u002F.flexlm\n",[132,452,450],{"__ignoreMap":176},[232,454,456],{"id":455},"问题-6gcc-编译工具链缺失vcs","问题 6：GCC \u002F 编译工具链缺失（VCS）",[125,458,459,278,461,464,465,464,468],{},[275,460,277],{},[132,462,463],{"code":463},"ld: command not found","、",[132,466,467],{"code":467},"dc: command not found",[132,469,470],{"code":470},"gcc can't be found",[125,472,473,278],{},[275,474,320],{},[170,476,479],{"className":477,"code":478,"language":175,"meta":176},[173],"sudo apt install -y \\\n    gcc-9 g++-9 build-essential binutils make \\\n    gdb bc csh ksh dc\n\nsudo update-alternatives --install \u002Fusr\u002Fbin\u002Fgcc gcc \u002Fusr\u002Fbin\u002Fgcc-9 90\nsudo update-alternatives --install \u002Fusr\u002Fbin\u002Fg++ g++ \u002Fusr\u002Fbin\u002Fg++-9 90\n",[132,480,478],{"__ignoreMap":176},[232,482,484],{"id":483},"问题-7numa-库缺失vcs-fgp-模式","问题 7：NUMA 库缺失（VCS FGP 模式）",[125,486,487,278,489],{},[275,488,277],{},[132,490,491],{"code":491},"Numa library is not available. Please check if the file \u002Fusr\u002Flib64\u002Flibnuma.so is accessible",[125,493,494,278],{},[275,495,320],{},[170,497,500],{"className":498,"code":499,"language":175,"meta":176},[173],"sudo apt install -y libnuma-dev libnuma1\n",[132,501,499],{"__ignoreMap":176},[232,503,505],{"id":504},"问题-8flexlm-无法绑定-tcp-端口","问题 8：FlexLM 无法绑定 TCP 端口",[125,507,508,278,510],{},[275,509,277],{},[132,511,512],{"code":512},"(lmgrd) Failed to open the TCP port number in the license",[125,514,515,517,518,521],{},[275,516,290],{},"：distrobox 容器的网络命名空间限制，",[132,519,520],{"code":520},"lmgrd"," 无法在容器内正常绑定端口。",[125,523,524,527,528,531,532,534],{},[275,525,526],{},"解决","：在",[275,529,530],{},"宿主机","上运行 ",[132,533,520],{"code":520},"，容器内通过环境变量指向宿主机的 license server：",[170,536,539],{"className":537,"code":538,"language":175,"meta":176},[173],"export LM_LICENSE_FILE=27000@localhost\n",[132,540,538],{"__ignoreMap":176},[232,542,544],{"id":543},"问题-9verdi-缺失系统库","问题 9：Verdi 缺失系统库",[125,546,547,549,550,464,553,464,556,559],{},[275,548,277],{},"：Verdi 启动时依次报 ",[132,551,552],{"code":552},"libsmime3.so",[132,554,555],{"code":555},"libXtst.so.6",[132,557,558],{"code":558},"libxslt.so.1"," 找不到",[125,561,562,278],{},[275,563,320],{},[170,565,568],{"className":566,"code":567,"language":175,"meta":176},[173],"sudo apt install -y libnss3 libxtst6 libxslt1-dev\n",[132,569,567],{"__ignoreMap":176},[232,571,573],{"id":572},"问题-10verdi-自带的-qt5-tbb-rtxstable-库找不到","问题 10：Verdi 自带的 Qt5 \u002F TBB \u002F RtxStable 库找不到",[125,575,576,278,578,581,582,464,585,464,588],{},[275,577,277],{},[132,579,580],{"code":580},"ldd"," 显示大量 ",[132,583,584],{"code":584},"libQt5*.so.5 => not found",[132,586,587],{"code":587},"libtbb.so.12 => not found",[132,589,590],{"code":590},"libRtxStable.so => not found",[125,592,593,595,596,205],{},[275,594,290],{},"：这些库是 Verdi 自带的，不需要从系统安装，只需设置 ",[132,597,598],{"code":598},"LD_LIBRARY_PATH",[125,600,601,604],{},[275,602,603],{},"相关路径","（均在 Verdi 安装目录下）：",[606,607,608,621],"table",{},[609,610,611],"thead",{},[612,613,614,618],"tr",{},[615,616,617],"th",{},"库",[615,619,620],{},"路径",[622,623,624,633,641],"tbody",{},[612,625,626,630],{},[627,628,629],"td",{},"Qt5",[627,631,632],{},"verdi\u002FW-2024.09-SP1\u002Fplatform\u002Flinux64\u002Flib\u002FQt5\u002Flib",[612,634,635,638],{},[627,636,637],{},"TBB",[627,639,640],{},"verdi\u002FW-2024.09-SP1\u002Fplatform\u002Flinux64\u002Flib\u002Ftbb",[612,642,643,646],{},[627,644,645],{},"RtxStable",[627,647,648],{},"verdi\u002FW-2024.09-SP1\u002Fplatform\u002Flinux64\u002Flib\u002Fzebu",[125,650,651,653,654,656,657,398],{},[275,652,320],{},"：在环境脚本中添加对应的 ",[132,655,598],{"code":598},"（见下方",[137,658,659],{"href":226},"环境脚本",[232,661,663],{"id":662},"问题-11容器内-x11-转发认证失败","问题 11：容器内 X11 转发认证失败",[125,665,666,668,669,464,672,674],{},[275,667,277],{},"：从 Mac 通过 SSH 连到宿主机（soleilUbuntu），再进入容器后，",[132,670,671],{"code":671},"xeyes",[132,673,281],{"code":281}," 等 GUI 程序起不来：",[170,676,681],{"className":677,"code":679,"language":680,"meta":176},[678],"language-Plain","X11 connection rejected because of wrong authentication.\nError: Can't open display: localhost:10.0\n","Plain",[132,682,679],{"__ignoreMap":176},[125,684,685],{},"而直接在宿主机上，X11 转发是正常的。",[125,687,688,278],{},[275,689,290],{},[691,692,693,707,720],"ul",{},[694,695,696,699,700,703,704,706],"li",{},[275,697,698],{},"hostname 不匹配","：SSH X11 转发生成的 xauth cookie 注册在宿主机 hostname ",[132,701,702],{"code":702},"soleilUbuntu\u002Funix:10"," 下，而容器的 hostname 是 ",[132,705,294],{"code":294},"。X Server 按 hostname 找 cookie，找不到就拒绝连接。",[694,708,709,715,716,719],{},[275,710,711,714],{},[132,712,713],{"code":713},"XAUTHORITY"," 为空","：容器内没有这个环境变量，xauth 定位不到 ",[132,717,718],{"code":718},"~\u002F.Xauthority","，无法正常读写 cookie。",[694,721,722,278,725,728],{},[275,723,724],{},"cookie 匹配歧义",[132,726,727],{"code":727},".Xauthority"," 里同时有宿主机和容器的记录。脚本匹配不精确时会拿到容器自己的旧 cookie（已失效），而不是宿主机当前会话的有效 cookie。",[125,730,731,734],{},[275,732,733],{},"手动修复","（容器内依次执行）：",[170,736,739],{"className":737,"code":738,"language":175,"meta":176},[173],"# 1. 指定 XAUTHORITY 路径\nexport XAUTHORITY=\u002Fhome\u002Fsoleil\u002F.Xauthority\n\n# 2. 从宿主机 xauth list 中找到当前 DISPLAY 对应的 cookie\nxauth -f \u002Fhome\u002Fsoleil\u002F.Xauthority list | grep \"^soleilUbuntu\u002Funix:\"\n\n# 3. 添加 cookie 到当前 DISPLAY\nxauth -f \u002Fhome\u002Fsoleil\u002F.Xauthority add localhost:10.0 MIT-MAGIC-COOKIE-1 \u003Ccookie值>\n\n# 4. 验证\nxeyes\n",[132,740,738],{"__ignoreMap":176},[125,742,743,746,747,750],{},[275,744,745],{},"自动化修复","：每次 SSH 重连后 cookie 都会变，手动加很麻烦。把下面这段追加到容器的 ",[132,748,749],{"code":749},"~\u002F.bashrc","，每次进入 Distrobox 时就会自动同步 cookie：",[170,752,755],{"className":753,"code":754,"language":175,"meta":176},[173],"cat >> ~\u002F.bashrc \u003C\u003C 'XEOF'\n# --- X11 auto fix for Distrobox ---\nexport XAUTHORITY=\u002Fhome\u002Fsoleil\u002F.Xauthority\nif [ -n \"$DISPLAY\" ]; then\n    DISPLAY_NUM=$(echo \"$DISPLAY\" | sed 's\u002F.*:\\([0-9]*\\).*\u002F\\1\u002F')\n    COOKIE=$(xauth -f \u002Fhome\u002Fsoleil\u002F.Xauthority list 2>\u002Fdev\u002Fnull | grep \"^soleilUbuntu\u002Funix:${DISPLAY_NUM} \" | head -1 | awk '{print $3}')\n    if [ -n \"$COOKIE\" ]; then\n        xauth -f \u002Fhome\u002Fsoleil\u002F.Xauthority add \"$DISPLAY\" MIT-MAGIC-COOKIE-1 \"$COOKIE\" 2>\u002Fdev\u002Fnull\n    fi\nfi\nXEOF\n",[132,756,754],{"__ignoreMap":176},[125,758,759],{},"脚本做了四件事：",[761,762,763,772,787,794],"ol",{},[694,764,765,766,768,769,771],{},"设置 ",[132,767,713],{"code":713}," 指向共享 home 目录下的 ",[132,770,727],{"code":727}," 文件",[694,773,774,775,778,779,782,783,786],{},"从 ",[132,776,777],{"code":777},"$DISPLAY","（如 ",[132,780,781],{"code":781},"localhost:10.0","）中提取 display 编号（如 ",[132,784,785],{"code":785},"10","）",[694,788,789,790,793],{},"用 ",[132,791,792],{"code":792},"^soleilUbuntu\u002Funix:"," 精确匹配宿主机的 cookie，避免误取容器自身的旧记录",[694,795,796,797,799],{},"把宿主机的有效 cookie 添加到容器当前的 ",[132,798,777],{"code":777}," 地址上",[125,801,802],{},"注意事项：",[691,804,805,815,818],{},[694,806,807,808,811,812,814],{},"如果宿主机 hostname 不是 ",[132,809,810],{"code":810},"soleilUbuntu","，需要把脚本中的 ",[132,813,810],{"code":810}," 替换为实际 hostname",[694,816,817],{},"如果使用多个 Distrobox 容器，每个容器都需要添加此脚本",[694,819,820],{},"若 SSH 配置变更导致 DISPLAY 编号改变，脚本会自动适配，无需修改",[151,822,824],{"id":823},"环境脚本-env_synopsys_2024sh","环境脚本 env_synopsys_2024.sh",[170,826,829],{"className":827,"code":828,"language":175,"meta":176},[173],"#!\u002Fusr\u002Fbin\u002Fenv bash\n# Synopsys 2024 environment setup\n# Usage: source ~\u002Fsynopsys\u002Fenv_synopsys_2024.sh\n\n########################################\n# 1) 安装根目录\n########################################\nINSTALL_ROOT=\"\u002Fhome\u002Fsoleil\u002Fsynopsys\"\n\n########################################\n# 2) License\n########################################\nexport SNPSLMD_LICENSE_FILE=\"27000@localhost.localdomain\"\nexport LM_LICENSE_FILE=\"${INSTALL_ROOT}\u002Fscl\u002F2024.06\u002Fadmin\u002Flicense\u002FSynopsys.dat\"\n\n########################################\n# 3) SCL\n########################################\nexport SCL_HOME=\"${INSTALL_ROOT}\u002Fscl\u002F2024.06\"\n\n########################################\n# 4) VCS\n########################################\nexport VCS_HOME=\"${INSTALL_ROOT}\u002Fvcs\u002FW-2024.09-SP1\"\nexport VCS_CC=gcc-9\nexport VCS_CXX=g++-9\nexport VCS_MODE_FLAG=64\nexport VCS_ARCH_OVERRIDE=\"linux\"\n\n########################################\n# 5) Verdi\n########################################\nexport VERDI_HOME=\"${INSTALL_ROOT}\u002Fverdi\u002FW-2024.09-SP1\"\n\n########################################\n# 6) Design Compiler (syn)\n########################################\nexport DC_HOME=\"${INSTALL_ROOT}\u002Fsyn\u002FT-2022.03-SP2\"\n\n########################################\n# 7) PATH\n########################################\nexport PATH=\"${SCL_HOME}\u002Flinux64\u002Fbin:${VCS_HOME}\u002Fbin:${VERDI_HOME}\u002Fbin:${DC_HOME}\u002Fbin:${PATH}\"\n\n########################################\n# 8) LD_LIBRARY_PATH（自动检查目录是否存在）\n########################################\n_LD_DIRS=(\n    \"${VERDI_HOME}\u002Fshare\u002FPLI\u002FVCS\u002Flinux64\"\n    \"${VERDI_HOME}\u002Fplatform\u002Flinux64\u002Flib\u002FQt5\u002Flib\"\n    \"${VERDI_HOME}\u002Fplatform\u002Flinux64\u002Flib\u002Ftbb\"\n    \"${VERDI_HOME}\u002Fplatform\u002Flinux64\u002Flib\u002Fzebu\"\n)\nfor _d in \"${_LD_DIRS[@]}\"; do\n    [ -d \"$_d\" ] && export LD_LIBRARY_PATH=\"${_d}:${LD_LIBRARY_PATH:-}\"\ndone\nunset _LD_DIRS _d\n\n########################################\n# 9) 终端兼容\n########################################\nexport TERM=xterm\n\n########################################\n# 10) 快捷命令\n########################################\nalias lmg=\"lmgrd -c '${INSTALL_ROOT}\u002Fscl\u002F2024.06\u002Fadmin\u002Flicense\u002FSynopsys.dat'\"\n",[132,830,828],{"__ignoreMap":176},[151,832,833],{"id":833},"一键安装所有容器内依赖",[125,835,836],{},"上面各个问题里装的包合在一起，新开一个容器时直接跑这一段：",[170,838,841],{"className":839,"code":840,"language":175,"meta":176},[173],"sudo apt update && sudo apt install -y \\\n    gcc-9 g++-9 build-essential binutils make gdb bc csh ksh dc \\\n    libnuma-dev libnuma1 libnss3 libxtst6 libxslt1-dev libtbb-dev \\\n    libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 \\\n    libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxcb-xfixes0 \\\n    libxcb-xkb1 libxkbcommon-x11-0 libfontconfig1 libxrender1 \\\n    libxi6 libxext6 libx11-xcb1 libgl1-mesa-glx \\\n    tcsh perl python3 gawk libstdc++6 zlib1g libgcc-s1 \\\n    libncurses5 libtinfo5 libx11-6 libxt6 libxft2 \\\n    libxmu6 libsm6 libice6 libfreetype6 libglib2.0-0 libpng16-16 \\\n    xauth x11-apps fonts-dejavu-core\n\nsudo update-alternatives --install \u002Fusr\u002Fbin\u002Fgcc gcc \u002Fusr\u002Fbin\u002Fgcc-9 90\nsudo update-alternatives --install \u002Fusr\u002Fbin\u002Fg++ g++ \u002Fusr\u002Fbin\u002Fg++-9 90\nsudo mkdir -p \u002Fusr\u002Ftmp && sudo touch \u002Fusr\u002Ftmp\u002F.flexlm\n",[132,842,840],{"__ignoreMap":176},[151,844,845],{"id":845},"依赖检查",[125,847,848,849,852,853,278],{},"经 ",[132,850,851],{"code":851},"ldd ... | grep \"not found\""," 验证，以下工具在完成上述配置后",[275,854,855],{},"依赖全部满足",[691,857,858,864,870,879],{},[694,859,860,863],{},[132,861,862],{"code":862},"vcs","（VCS W-2024.09-SP1）",[694,865,866,869],{},[132,867,868],{"code":868},"icc2_shell","（ICC2 W-2024.09）",[694,871,872,875,876,878],{},[132,873,874],{"code":874},"dc_shell"," \u002F ",[132,877,281],{"code":281},"（Design Compiler T-2022.03-SP2）",[694,880,881,884],{},[132,882,883],{"code":883},"verdi","（Verdi W-2024.09-SP1）",[151,886,887],{"id":887},"最终效果",[125,889,890],{},"最后拿神的大作业来跑了一下，效果还可以 😃",[125,892,893],{},[894,895],"img",{"alt":896,"src":897},"VCS 仿真：FPU 除法测试全部通过","https:\u002F\u002Fphenthu-1321233386.cos.ap-nanjing.myqcloud.com\u002Fimg\u002F(null)-20260909162653990.(null)",[125,899,900],{},[894,901],{"alt":902,"src":903},"Design Vision 图形界面正常启动","https:\u002F\u002Fphenthu-1321233386.cos.ap-nanjing.myqcloud.com\u002Fimg\u002F(null)-20260909162654252.(null)",{"title":176,"searchDepth":905,"depth":905,"links":906},4,[907,909,910,915,928,929,930,931],{"id":153,"depth":908,"text":153},2,{"id":208,"depth":908,"text":208},{"id":230,"depth":908,"text":230,"children":911},[912,914],{"id":234,"depth":913,"text":234},3,{"id":250,"depth":913,"text":250},{"id":267,"depth":908,"text":267,"children":916},[917,918,919,920,921,922,923,924,925,926,927],{"id":270,"depth":913,"text":271},{"id":345,"depth":913,"text":346},{"id":377,"depth":913,"text":378},{"id":401,"depth":913,"text":402},{"id":434,"depth":913,"text":435},{"id":455,"depth":913,"text":456},{"id":483,"depth":913,"text":484},{"id":504,"depth":913,"text":505},{"id":543,"depth":913,"text":544},{"id":572,"depth":913,"text":573},{"id":662,"depth":913,"text":663},{"id":823,"depth":908,"text":824},{"id":833,"depth":908,"text":833},{"id":845,"depth":908,"text":845},{"id":887,"depth":908,"text":887},[933],"Ubuntu","用 Distrobox 起一个 Ubuntu 20.04 容器跑 Synopsys 2024 工具链，以及一路踩过的坑",false,"md",true,null,{"slots":940},{},{"text":942,"minutes":943,"time":944,"words":945},"10 min read",9.555,573300,1911,[947,949,951],{"title":948,"link":139},"Ubuntu22.04版本安装VCS+Verdi - 知乎",{"title":950,"link":146},"Synopsys EDA Tools安装和使用过程中出现的问题及解决方法 - Verdvana",{"title":952,"link":184},"libpng12-0 1.2.54-1ubuntu1 (xenial) - Launchpad",{"title":105,"description":934},{"loc":104,"images":955},[956,957],{"loc":897},{"loc":903},[959,960,961],"Synopsys","EDA","Distrobox","tech","2026-09-09 16:50:00","5ccynB3nT9fG-a5EXYblGjjkbJ8C33nzpbEhzbAlF_o",[966,967],{"title":97,"path":96,"stem":95,"date":93,"type":962,"children":-1},{"title":109,"path":108,"stem":107,"date":93,"type":962,"children":-1},1788948722352]