请提供更多详情
您可以使用file 命令获得有关您的二进制文件 (simu) 的有用证明:
file path/to/the/simu
您还可以使用 ldd 仔细检查二进制文件正在查找的库的确切名称:
ldd path/to/the/simu
请提供前面命令的输出,以帮助回答您的问题。
同时,一个可能的答案可能是..
我想二进制文件已经在 RedHat/Fedora/Centos 上使用他们的 compat-lib* 包(提供libstdc++-libc lib)编译。
我认为/假设在 Mint/Ubuntu 中没有相同的 compat-* 包和库,但是使用这样的库编译,也许它应该通过在库路径中手动创建适当的符号链接来工作。符号链接应指向系统中已安装的libstdc++ 动态库之一)
例如,您可以创建一个从/usr/lib/x86_64-linux-gnu/libstdc++-libc6.1-1.so.2 到/usr/lib/x86_64-linux-gnu/libstdc++.so.? 的链接,在哪里?是您在系统中找到的较小版本号。
命令示例(你必须适应它):
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++-libc6.1-1.so.2
还有一些情况(取决于二进制文件是在 32 位还是 64 位上编译的),您需要将路径 x86_64-linux-gnu 更改为 i386-linux-gnu。你必须尝试适应你的情况。
这是一个假设的粗略破解,不能保证 :-) 事实上我只是好奇。
更干净的方式
为了不让链接污染您的操作系统/系统,您可以创建一个新文件夹,将其命名为“customlibs”,在您拥有程序/二进制文件的同一位置。
您可以在该文件夹内为每个不匹配的库文件名创建链接,例如:
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./customlibs/libstdc++-libc6.1-1.so.2
然后,为了执行程序,打开一个终端并从 cli 使用以下命令更改 LD_LIBRARY 环境变量:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/absolute/path/to/customlibs
这样,系统也会在customlibs 中查找库。
在同一个终端,执行程序:
./simu
这样你就不会弄乱系统。
你需要非常幸运
从已编译二进制文件的系统中复制所需的库时,以“更简洁的方式”执行该工作相当简单。
也是比较靠谱的方法,我已经执行过几次了。
我们现在正在执行的 hack,与当前系统库链接,有点“难”。祝你好运。