如何修复分布式二进制文件中的“符号查找错误”?
Posted
技术标签:
【中文标题】如何修复分布式二进制文件中的“符号查找错误”?【英文标题】:How to fix "symbol lookup error" in a distributed binary? 【发布时间】:2020-07-29 02:47:20 【问题描述】:我刚刚将 Linux Mint 从 19.3 升级到 20。
我发现存档文件没有打开。更具体地说,file-roller 报告错误:
root@Sala:/home/peter# /usr/bin/file-roller
/usr/bin/file-roller: symbol lookup error: /usr/bin/file-roller: undefined symbol: archive_write_add_filter_zstd
我已使用 synaptic 和 apt --purge 删除并重新安装了 file-roller,但问题仍未解决。
我已在 Linux Mint 论坛发帖,超过 24 小时后未发布解决方案。
我该如何解决这个问题?
【问题讨论】:
好的,进一步调查显示在 libarchive.so.13 中有很多 'archive_write_add_filter*' 符号,但 zstd 不在其中。我有点怀疑我的 libarchive.so.13 日期是 2017 年 9 月 15 日,但我不确定如何找到可能包含 zstd 的更新副本。 好的,我已经解决了这个问题 - 出于某种原因,libarchive.so 的旧副本已与 Python 库一起安装在 /usr/local/lib 中。删除允许 file-roller 运行的文件。 【参考方案1】:我在 Amazon AMI 上遇到了类似的问题,它的 libarchive 的最新可升级版本设置为 3.1.2-14.amzn2,我想获得 3.5.1 的实际最新版本。我能够在http://www.linuxfromscratch.org/blfs/view/svn/general/libarchive.html 的帮助下解决它:
sudo yum remove libarchive*
wget https://github.com/libarchive/libarchive/releases/download/3.5.1/libarchive-3.5.1.tar.xz
tar -xvf libarchive-3.5.1.tar.xz
cd libarchive-3.5.1
./configure --prefix=/usr --disable-static && make
sudo make install
cd .. && rm -rf libarchive-3.5.1 && rm libarchive-3.5.1.tar.xz
我搞砸了,因为我也在尝试更新 CMake。这继续失败,因为 CMake 正在 /usr/lib64 中寻找 libarchive,但它已安装到 /usr/lib。这感觉不对。如果有更好的方法,请告诉我。
sudo cp /usr/libarchive* /usr/lib64
【讨论】:
以上是关于如何修复分布式二进制文件中的“符号查找错误”?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio - 如何修复二进制项目文件中的路径?
如何修复无法在 macbook 上自动检测 ADB 二进制文件
如何在我的 pygame 项目的 Python 二进制文件中修复此编码错误?