当我尝试在 tcl 控制台中启动 atom (exec atom) 时,我从 Xilinx Vivado 环境中收到此符号查找错误,它应该在系统环境中执行此命令。(我已经在他们的论坛上发布了这个问题)。诸如 exec gedit 之类的命令可以成功运行,但这个不行。这是我遇到的错误:
/usr/share/atom/atom: symbol lookup error: /lib/x86_64-linux-gnu/libgnutls.so.30: undefined symbol: __gmpz_limbs_write
我已经检查了我的系统,gnutls 没有两个版本,并且根据 apt 缓存策略它是最新稳定版本。
apt-cache policy libgnutls30
libgnutls30:
Installed: 3.6.13-2ubuntu1.2
Candidate: 3.6.13-2ubuntu1.2
Version table:
*** 3.6.13-2ubuntu1.2 500
500 http://gb.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
100 /var/lib/dpkg/status
3.6.13-2ubuntu1.1 500
500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
3.6.13-2ubuntu1 500
500 http://gb.archive.ubuntu.com/ubuntu focal/main amd64 Packages
共享对象文件上的 ldd 打印:
ldd libgnutls.so.30
linux-vdso.so.1 (0x00007ffeb5900000)
libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f4dd6455000)
libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f4dd6434000)
libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f4dd62b2000)
libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f4dd629c000)
libnettle.so.7 => /lib/x86_64-linux-gnu/libnettle.so.7 (0x00007f4dd6262000)
libhogweed.so.5 => /lib/x86_64-linux-gnu/libhogweed.so.5 (0x00007f4dd622a000)
libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f4dd61a4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4dd5fb2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4dd6779000)
libffi.so.7 => /lib/x86_64-linux-gnu/libffi.so.7 (0x00007f4dd5fa6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4dd5fa0000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4dd5f7d000)
我使用的是 Ubuntu 20.04,并且已完全更新,如果有其他详细信息需要提供,请告诉我。我想说我是一个中级 Linux 用户,但我不知道如何修复共享对象文件和链接。任何帮助都将不胜感激。
我在 Xilinx 论坛上发帖: 论坛链接
我相信可以在那里解决问题这个帖子也是正确答案,所以我将其标记为解决方案。
答案1
在 Vivado 2022.2 (Ubuntu 22.04.1 LTS) 中将 vs code 设置为外部编辑器时,我遇到了类似的问题。Vivado 根据 Ubuntu 版本使用自己的 libgmp:
~/Xilinx/Vivado/2022.2/lib/lnx64.o/Ubuntu $ find . -name 'libgmp.so'
./libgmp.so
./20/libgmp.so
顶层 libgmp (正在使用的)不包含该符号:
~/Xilinx/Vivado/2022.2/lib/lnx64.o/Ubuntu $ grep -r gmpz_limbs_write
grep: 20/libgmp.so.10.4.0: binary file matches
解决方法是将顶层 libgmp 替换或符号链接到 20/libgmp:
~/Xilinx/Vivado/2022.2/lib/lnx64.o/Ubuntu $ mv libgmp.so.10.0.3 _libgmp.so.10.0.3.bak
~/Xilinx/Vivado/2022.2/lib/lnx64.o/Ubuntu $ cp 20/libgmp.so.10.4.0 libgmp.so.10.0.3