我使用 Ubuntu 18.04。我使用 apt 安装库,例如:
sudo apt install freeglut3-dev
apt 是否总是安装动态库,或者我可以确定一个包是包含静态库还是动态库?
我使用 Ubuntu 18.04。我使用 apt 安装库,例如:
sudo apt install freeglut3-dev
apt 是否总是安装动态库,或者我可以确定一个包是包含静态库还是动态库?
我正在使用 gcc 开发一个使用外部库的 C++ 应用程序。例如libtiff
和libpng
。我得到了这些apt-get
,一切正常。
但后来我添加了另一个第三方库,作为独立的一对.a
和.so
lib
文件交付。我检测到另一个.so
存储在 中/usr/lib/x86_64-linux-gnu
,我在.so
那里复制了新的。我成功链接了我的应用程序,但执行失败并显示消息“ error while loading shared libraries: libThirdParty.so: cannot open shared object file: No such file or directory
”
我错过了什么?
我正在尝试编译一个项目,但由于缺少库而导致编译失败。
System.DllNotFoundException: Unable to load shared library 'libdl.so' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibdl.so: cannot open shared object file: No such file or directory
at Assimp.Unmanaged.UnmanagedLibrary.UnmanagedLinuxLibraryImplementation.dlopen(String fileName, Int32 flags)
at Assimp.Unmanaged.UnmanagedLibrary.UnmanagedLinuxLibraryImplementation.NativeLoadLibrary(String path)
at Assimp.Unmanaged.UnmanagedLibrary.UnmanagedLibraryImplementation.LoadLibrary(String path)
at Assimp.Unmanaged.UnmanagedLibrary.LoadLibrary(String libPath)
at Assimp.Unmanaged.UnmanagedLibrary.LoadLibrary()
at Assimp.Unmanaged.UnmanagedLibrary.LoadIfNotLoaded()
at Assimp.Unmanaged.AssimpLibrary.CreatePropertyStore()
at Assimp.AssimpContext.CreateConfigs()
at Assimp.AssimpContext.PrepareImport()
at Assimp.AssimpContext.ImportFile(String file, PostProcessSteps postProcessFlags)
at Microsoft.Xna.Framework.Content.Pipeline.OpenAssetImporter.Import(String filename, ContentImporterContext context) in C:\BuildAgents\MonoGameWin1\work\f7381a85a626990\MonoGame.Framework.Content.Pipeline\OpenAssetImporter.cs:line 291
at Microsoft.Xna.Framework.Content.Pipeline.FbxImporter.Import(String filename, ContentImporterContext context) in C:\BuildAgents\MonoGameWin1\work\f7381a85a626990\MonoGame.Framework.Content.Pipeline\FbxImporter.cs:line 24
at Microsoft.Xna.Framework.Content.Pipeline.ContentImporter`1.Microsoft.Xna.Framework.Content.Pipeline.IContentImporter.Import(String filename, ContentImporterContext context) in C:\BuildAgents\MonoGameWin1\work\f7381a85a626990\MonoGame.Framework.Content.Pipeline\ContentImporter.cs:line 45
at MonoGame.Framework.Content.Pipeline.Builder.PipelineManager.ProcessContent(PipelineBuildEvent pipelineEvent) in C:\BuildAgents\MonoGameWin1\work\f7381a85a626990\MonoGame.Framework.Content.Pipeline\Builder\PipelineManager.cs:line 669
我一直在 github、Google、Stackoverflow、askubuntu 和此处的 MonoGame 问题跟踪器中寻找已知的解决方案。
检查我的系统时,如果该文件确实存在,sudo find / -iname libdl.so
但找不到该文件。在里面/usr/lib/i386-linux-gnu
,/usr/lib/x86_64-linux-gnu
我可以找到一个libdl.so.2
听起来相关的文件。
在https://packages.ubuntu.com/search?suite=trusty&arch=any&searchon=contents&keywords=libdl.so上,我可以看到该libdl.so
文件包含在libc6-dev
我已经安装但重新安装的包中,但没有任何运气。
这是结果sudo apt-config dump | grep APT::Architecture
APT::Architecture "amd64";
APT::Architectures "";
APT::Architectures:: "amd64";
APT::Architectures:: "i386";
这是结果dpkg-query --list libc6
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-===============-============-=================================
ii libc6:amd64 2.34-0ubuntu3.2 amd64 GNU C Library: Shared libraries
ii libc6:i386 2.34-0ubuntu3.2 i386 GNU C Library: Shared libraries
我正在运行 Pop!_OS 21.10 64 位。
我可以做些什么来获取libdl.so
文件,甚至可以以健康和受支持的方式?
您如何列出程序的所有依赖项(库)和配置,即使它获得了 argv,这会改变依赖项,比如说?
我正在尝试转储由 ELF 文件 ( /usr/bin/ls
)导入的共享库的完整路径
使用readelf --dyn-syms /usr/bin/ls
我得到库的名称,但不是它们在文件系统上的位置:
101: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@LIBSELINUX_1.0 (4)
使用objdump -T /usr/bin/ls
我可以获得更多信息(包括函数名称):
0000000000000000 DF *UND* 0000000000000000 (LIBSELINUX_1.0) getfilecon
这是有用的信息,但我怎样才能在磁盘上提取库的位置?我可以运行该文件并查看它通过 . 打开的内容lsof
,但是有什么方法可以在不运行该文件的情况下执行此操作吗?
我目前在安装 wine 时遇到的问题是它没有找到启动游戏的 DLL,他说:
0100:err:module:import_dll Library D3DCOMPILER_43.dll (which is needed by L"B:\\Games\\Game.exe") not found
但我知道 DLL 在 中wineprefix
,唯一的问题是 DLL 都是小写的,如果我将 mixcase 名称符号链接到小写名称,它似乎可以工作。奇怪的是,在知道这是一个区分大小写的问题之前,我只是重新启动了我的系统几次,有时它可以工作并且区分大小写不是问题,有时它不会并再次说他可以'找不到DLL。而且它并不总是这样,但我不知道从什么时候开始像这样(但可能是因为我确实因为一个错误再次设置了我的系统)
我现在确实设置了一个文件系统,它在 linux 内核版本 5.2 中引入了不区分大小写的文件系统,但我想知道您是否可以以正常方式修复此问题。
我正在尝试使用auCDtect来检查我的音频文件的真实性。通过添加 libstdc++-libc6.2-2.so.3,我可以在我的 Synology NAS (DS918+) 上成功运行 linux 二进制文件。我想在我的 macbook pro 笔记本电脑上更快地做到这一点。我在 Debian GNU Linux 9(在 Parallels Desktop 中)重复了相同的步骤,导致了这个错误:
Fatal error: glibc detected an invalid stdio handle
fish: 'aucdtect' terminated by signal SIGABRT (Abort)
数据库:
(gdb) run
Starting program: /usr/local/bin/aucdtect
Fatal error: glibc detected an invalid stdio handle
Program received signal SIGABRT, Aborted.
0xf7fd7c89 in __kernel_vsyscall ()
(gdb) bt
#0 0xf7fd7c89 in __kernel_vsyscall ()
#1 0xf7d8fdf0 in raise () from /lib32/libc.so.6
#2 0xf7d912b7 in abort () from /lib32/libc.so.6
#3 0xf7dcb3af in ?? () from /lib32/libc.so.6
#4 0xf7dcb3ec in __libc_fatal () from /lib32/libc.so.6
#5 0xf7dcbd73 in ?? () from /lib32/libc.so.6
#6 0xf7da641b in vfprintf () from /lib32/libc.so.6
#7 0xf7dad7c8 in fprintf () from /lib32/libc.so.6
#8 0x080492d4 in ?? ()
#9 0xf7d7c286 in __libc_start_main () from /lib32/libc.so.6
#10 0x080489b1 in ?? ()
(gdb)
#0 0xf7fd7c89 in __kernel_vsyscall ()
#1 0xf7d8fdf0 in raise () from /lib32/libc.so.6
#2 0xf7d912b7 in abort () from /lib32/libc.so.6
#3 0xf7dcb3af in ?? () from /lib32/libc.so.6
#4 0xf7dcb3ec in __libc_fatal () from /lib32/libc.so.6
#5 0xf7dcbd73 in ?? () from /lib32/libc.so.6
#6 0xf7da641b in vfprintf () from /lib32/libc.so.6
#7 0xf7dad7c8 in fprintf () from /lib32/libc.so.6
#8 0x080492d4 in ?? ()
#9 0xf7d7c286 in __libc_start_main () from /lib32/libc.so.6
#10 0x080489b1 in ?? ()
我想这可能是因为该程序太旧(2004 年)并且与较新的库不兼容。我怎样才能找出导致问题的库(可能是 libc?),以及我应该获得哪个旧版本?
我错误地从文件夹中删除了libcom_err.so.2
库,命令停止工作。我想知道是否有任何方法可以找到此 lib 文件并将其替换到该文件夹中,因为我没有任何备份。有没有办法解决这个问题?我在 CentOS 7 上。usr/lib64/
yum
PS:我认为我必须使用的文件位于包libcom_err-1.42.9-16.el7.x86_64.rpm中,但不知道如何提取这些库文件并将它们复制到该文件夹中。
我已经从 linux ubuntu 18.04 的 Steam 商店安装了“反恐精英全球攻势”,但是当我(从终端)启动它时,它会出现许多错误,如下所示:
Steam/steamapps/common/Counter-Strike Global Offensive/bin/datacache_client.so
error=Steam/steamapps/common/Counter-Strike Global Offensive/bin/datacache_client.so: wrong ELF class: ELFCLASS32
从已经回答的问题中,我已经知道我应该安装 32 位共享对象,但是这些库中的大多数(如果不是全部)在存储库中不可用,并且是由游戏开发人员创建的。
我想知道我能做些什么来抑制这些错误?
也不能直接从 Steam 应用程序启动。
感谢您的帮助。
谢谢。
我已经安装ocl-icd-opencl-dev
并尝试运行一个简单的 OpenCL 应用程序,名为vadd
:
$ ./vadd
./vadd: error while loading shared libraries: libOpenCL.so.1: cannot open shared object file: No such file or directory
我遵循了这个,输出如下所示(我只保留了有趣的部分):
$ strace -f -v -s150 ./vadd 2>&1 | fgrep libOpenCL.so.1
...
open("/usr/lib/x86_64-linux-gnu/libOpenCL.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
...
出色地...
$ ls -la /usr/lib/x86_64-linux-gnu/ | grep libOpenCL
lrwxrwxrwx 1 root root 18 Dec 18 2015 libOpenCL.so.1 -> libOpenCL.so.1.0.0
我在这里想念什么?这libOpenCL.so.1
是一个符号链接的问题吗?