AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[shared-library](unix)

Martin Hope
Ole Tange
Asked: 2024-12-30 03:53:08 +0800 CST

为什么我不能拦截`seq`中的`write`?

  • 7

根据限制文件 IO 速度,我构建了https://git.data.coop/tange/tangetools/src/branch/master/iothrottle

它适用于某些程序:

iothrottle -i 10M cat foo > bar # Yes, here you could just use pv
iothrottle -o 1M ffmpeg -i foo.mp3 foo.wav
iothrottle -o 1M cp -a foodir /other/fs/foodir

这不会:

iothrottle -o 1M cp -a foodir /same/fs/foodir

因为在同一个文件系统上每个文件cp使用一次调用copy_file_range。

我可以接受这个限制。

它对 也不起作用seq。当我运行时,strace seq 100000我得到:

write(1, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14"..., 8192) = 8192
write(1, "\n1861\n1862\n1863\n1864\n1865\n1866\n1"..., 4096) = 4096
write(1, "2680\n2681\n2682\n2683\n2684\n2685\n26"..., 4096) = 4096
write(1, "499\n3500\n3501\n3502\n3503\n3504\n350"..., 4096) = 4096
write(1, "18\n4319\n4320\n4321\n4322\n4323\n4324"..., 4096) = 4096
write(1, "7\n5138\n5139\n5140\n5141\n5142\n5143\n"..., 4096) = 4096
write(1, "\n5957\n5958\n5959\n5960\n5961\n5962\n5"..., 4096) = 4096
write(1, "6776\n6777\n6778\n6779\n6780\n6781\n67"..., 4096) = 4096
write(1, "595\n7596\n7597\n7598\n7599\n7600\n760"..., 4096) = 4096
write(1, "14\n8415\n8416\n8417\n8418\n8419\n8420"..., 4096) = 4096
write(1, "3\n9234\n9235\n9236\n9237\n9238\n9239\n"..., 3838) = 3838

因此它似乎在调用write(而不是某些mmap或其他魔法),因此应该起作用。

但是当我运行时:IOTHROTTLE_DEBUG=1 iothrottle -o 1M seq 10000 >/dev/null我得到:

init called: default read_limit=0, write_limit=0
IOTHROTTLE_READ=0
IOTHROTTLE_WRITE=1048576
Final read_limit=0, write_limit=1048576
allowed: 608 written: 0
allowed: 617 written: 0

这告诉我iothrottle仅拦截了 2 次调用write。

我错过了什么?

shared-library
  • 1 个回答
  • 38 Views
Martin Hope
Irbis
Asked: 2022-06-08 03:23:17 +0800 CST

apt 包 - 静态库与动态库

  • 0

我使用 Ubuntu 18.04。我使用 apt 安装库,例如:

sudo apt install freeglut3-dev

apt 是否总是安装动态库,或者我可以确定一个包是包含静态库还是动态库?

apt shared-library
  • 1 个回答
  • 173 Views
Martin Hope
Yves Daoust
Asked: 2022-05-17 23:52:26 +0800 CST

如何“安装”共享库

  • 1

我正在使用 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”

我错过了什么?

software-installation shared-library
  • 2 个回答
  • 295 Views
Martin Hope
Robin Theilade
Asked: 2022-04-24 03:11:00 +0800 CST

无法加载共享库“libdl.so”或其依赖项之一

  • 1

我正在尝试编译一个项目,但由于缺少库而导致编译失败。

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文件,甚至可以以健康和受支持的方式?

apt shared-library
  • 2 个回答
  • 2695 Views
Martin Hope
Sir Muffington
Asked: 2022-03-15 10:32:49 +0800 CST

当程序附加了标志/选项时,如何列出程序的所有库依赖项和配置?

  • 0

您如何列出程序的所有依赖项(库)和配置,即使它获得了 argv,这会改变依赖项,比如说?

shared-library
  • 1 个回答
  • 139 Views
Martin Hope
dcom-launch
Asked: 2022-03-01 11:42:47 +0800 CST

ELF:转储二进制文件导入的.so文件的路径

  • 1

我正在尝试转储由 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,但是有什么方法可以在不运行该文件的情况下执行此操作吗?

elf shared-library
  • 1 个回答
  • 482 Views
Martin Hope
DigitalDragon
Asked: 2021-09-23 05:08:08 +0800 CST

Wine 找不到 DLL

  • 0

我目前在安装 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 中引入了不区分大小写的文件系统,但我想知道您是否可以以正常方式修复此问题。

wine shared-library
  • 3 个回答
  • 1107 Views
Martin Hope
Joy Jin
Asked: 2021-09-09 23:40:15 +0800 CST

auCDtect:致命错误:glibc 检测到无效的 stdio 句柄

  • 0

我正在尝试使用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?),以及我应该获得哪个旧版本?

linux shared-library
  • 2 个回答
  • 119 Views
Martin Hope
Majid Hojati
Asked: 2020-02-15 13:59:21 +0800 CST

libcom_err.so.2:无法打开共享对象文件

  • 0

我错误地从文件夹中删除了libcom_err.so.2库,命令停止工作。我想知道是否有任何方法可以找到此 lib 文件并将其替换到该文件夹​​中,因为我没有任何备份。有没有办法解决这个问题?我在 CentOS 7 上。usr/lib64/yum

PS:我认为我必须使用的文件位于包libcom_err-1.42.9-16.el7.x86_64.rpm中,但不知道如何提取这些库文件并将它们复制到该文件夹​​中。

centos shared-library
  • 1 个回答
  • 1066 Views
Martin Hope
Parsa Mousavi
Asked: 2020-02-05 22:21:15 +0800 CST

错误的ELF类:在Linux中启动由steam安装的游戏时出现ELFCLASS32

  • 1

我已经从 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 应用程序启动。
感谢您的帮助。
谢谢。

shared-library steam
  • 2 个回答
  • 4805 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve