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 / 问题

问题[libraries](unix)

Martin Hope
SeanJ
Asked: 2024-06-20 06:23:22 +0800 CST

安装 libudev 和 libudev-dev 有什么区别

  • 5

我正在尝试安装 pcsc-lite 并注意到文档说需要 libudev。

当我尝试安装 libudev 时,出现以下信息:

sudo apt-get install libudev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package libudev

但是当我安装 libudev-dev 时,没有遇到任何问题。

sudo apt-get install libudev-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libraspberrypi0 libwpe-1.0-1 libwpebackend-fdo-1.0-1
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  libudev-dev
0 upgraded, 1 newly installed, 0 to remove and 21 not upgraded.

通过安装 libudev-dev 我是否也安装了 libudev?

libraries
  • 2 个回答
  • 37 Views
Martin Hope
amyers
Asked: 2022-11-12 07:38:18 +0800 CST

Qt静态链接应用报错:linuxfb plugin not found by the application

  • 5

我已经使用带有动态链接库的 Qt Creator 成功开发了一个图形化的 Qt 5.15.2 应用程序。由于各种原因,我确定静态链接更适合我的应用程序。我试图将我的开发环境切换为使用静态库而不是动态库。我的应用程序构建没有错误,但是当我将我的应用程序部署到开发板(运行 Debian 11.5 的 BeagleBone Black)时,出现以下错误:

qt.qpa.plugin: Could not find the Qt platform plugin "linuxfb" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

我传入了一个-platform linuxfb命令行参数,我构建了我自己的静态 Qt 库,我添加CONFIG += static到我的.pro文件中,我在 Qt Creator 中使用静态库。我需要做一些特别的事情才能让linuxfb库/插件链接吗?任何对我如何解决这个问题的见解都将不胜感激。

libraries
  • 1 个回答
  • 15 Views
Martin Hope
GospelBG
Asked: 2022-11-01 08:30:50 +0800 CST

错误的 ELF 类:ELFCLASS64

  • 5

我在 ARM 机器上,我想使用 x86 程序。
安装 Box86 和程序及其库。

由于此错误,程序崩溃:Error initializing native *libname* (last dlerror is *libname*: wrong ELF class: ELFCLASS64)。对于我安装的每个库,此错误都会重复多次。

根据这个答案,这是因为它们是 64 位库,但我确保安装了 i386 版本的软件包。此外,他们的解决方法并不能解决我的问题,导致相同的输出。

这里发生了什么的任何线索?
提前致谢。

libraries
  • 1 个回答
  • 30 Views
Martin Hope
Jun Inoue
Asked: 2022-06-29 05:58:59 +0800 CST

/usr/lib/x86_64-linux-gnu/<libname> 不在搜索路径上;解决这个问题的“正确”方法是什么?

  • 0

在 Ubuntu 上,我倾向于遇到安装在 下的库的链接错误,/usr/lib/x86_64-linux-gnu/<libname>默认情况下似乎不会搜索这些库。在最新的示例中,我尝试使用 的 Python 绑定fswatch,它抱怨undefined symbol: fsw_init_library因为fswatch包安装了共享对象,/usr/lib/x86_64-linux-gnu/libfswatch而 Python(似乎依赖 gcc)没有搜索它。

我可以硬编码一个标志来将该目录添加到搜索路径中,如下所示,但这似乎非常脆弱、不可移植,而且完全是错误的。

if sys.platform == 'linux':
    os.setenv ('LD_LIBRARY_PATH', '/usr/lib/x86_64-linux-gnu/libfswatch')

当我也想LD_LIBRARY_PATH用于其他目的,或者也支持非 x86_64 平台,有多个依赖项遇到这个问题等等时,这很快就会变得非常复杂。更糟糕的是,这个咒语因工具链而异:上面的代码是针对 Python 的;Makefile+gcc 需要别的东西;cmake 可能会想要另一个,依此类推。

有没有更好的方法来处理这个问题,它可以避免这种平台、包和工具特定的杂乱无章?将这样的库带入范围的“正确”(预期)方式是什么,谁的包不关心将它放在库搜索路径上?是否有一个神奇的脚本可以正确设置环境变量?我是否缺少“启用”这些类型的库的设置?像 pkg-config 这样的东西就足够fswatch了,但不附带 pkg-config.pc文件。我在这里以 fswatch 为例,但这不是我第一次对这个问题感到恼火(尽管我不记得过去事件的细节)。

ubuntu libraries
  • 1 个回答
  • 297 Views
Martin Hope
Raven
Asked: 2022-03-17 07:34:09 +0800 CST

指定要使用的 libstdc++

  • 0

我想使用更新的 GCC 版本。因此,我编译了 GCC 10 并将其安装到非标准目录/software/gcc10/中。到目前为止,一切都很好。

但是,当我真正想使用这个新版本的 GCC 时,我遇到了一些问题。我修改了我的PATH变量以包含/software/gcc10/bin/现在gcc --version确认系统找到我的新 GCC 10 编译器(而不是我系统的 GCC 8 编译器)。

但是,当我尝试使用此设置编译程序时,我收到有关未定义引用的错误std::filesystem,这应该是 GCC 10 的 libstdc++ 的一部分。我的假设是,虽然我现在使用的是更新的编译器,但链接器仍然希望链接到我系统的 libstdc++ 而不是/software/gcc10/lib64.

我尝试更改LD_LIBRARY_PATH以包含相应的目录,但这似乎没有任何效果。

检查gcc使用该-v选项运行的输出时,我偶然发现了LIBRARY_PATH环境变量,根据gcc 的文档,它的使用如下:

LIBRARY_PATH 的值是一个以冒号分隔的目录列表,很像 PATH。当配置为本地编译器时,如果 GCC 使用 GCC_EXEC_PREFIX 无法找到它们,则 GCC 在搜索特殊链接器文件时会尝试指定的目录。在为 -l 选项搜索普通库时,使用 GCC 进行链接也会使用这些目录(但首先使用 -L 指定的目录)。

事实上:LIBRARY_PATH相应地设置变量可以让我成功编译我的程序。但是,这似乎是一个特定于 gcc 的解决方案,我不禁想知道是否有更标准的方法来执行此操作(例如,这也会告诉 clang 在哪里寻找要链接的 C++ 标准库)?

更好的解决方案是使我的新 GCC 10 编译器始终使用 GCC 10 标准库,而系统的 GCC 8 编译器的调用将始终链接到系统 GCC 8 标准库。有没有办法告诉特定的编译器二进制文件它有一个应该使用的特定 stdlib?

libraries gcc
  • 1 个回答
  • 734 Views
Martin Hope
Sir Muffington
Asked: 2022-03-13 14:39:30 +0800 CST

如何在 Linux 中重新加载 .so 文件(动态库)?

  • 0

我不记得这个命令了,但基本上每个 Linux 发行版都有一个用于重新加载 .so 文件和其他库的命令。怎么叫的?

这和ld我想的差不多。我试过ldconfig了,但也没有用。

更新:

我安装了一个库,但程序没有在那里拾取它。

更新 2

我编译了该库并将其安装在我认为 /usr/local/lib 下需要的位置?我认为ldd program不包含该库,但我忘了 grep 它...我得到的结果与安装库之前相同:初始化失败

linux libraries
  • 1 个回答
  • 2229 Views
Martin Hope
void
Asked: 2022-02-17 05:56:44 +0800 CST

/usr/lib 与 /etc/ld.so.conf.d

  • 0

TL;DR为什么将符号链接放置到共享库更好,/etc/lib(64)/或者为什么在其中创建 *.conf 文件更好/etc/ld.so.conf.d/


.conf 文件

假设我有我的自定义二进制文件/opt/foo/,附带它自己的共享库。常见的方法(我知道)是将文件放置在/etc/ld.so.conf.d/foo.conf如下位置:

# Link foo libraries. This file is included in /etc/ld.so.conf
/opt/foo/lib
/opt/foo/otherlibs

然后运行ldconfig。

符号链接

但我发现我也可以/usr/lib像这样将我的库链接到(或 lib64):

for f in /etc/foo/{lib,otherlibs}/*; do
  ln -s $f /usr/lib64/$(basename $f)
done

然后我就不用跑ldconfig了。

这两种方式的优缺点是什么?

我可以想象在升级应用程序或库版本时,“符号链接”方式不是很好处理。一般来说,“.conf”方式对我来说似乎更模块化和更 Linux-ish。

我偶尔会遇到这种情况,因为我们必须加密(并且仅在运行时解密)特定库。ldconfig加密时无法识别库(仍为 ELF 格式),因此对我来说唯一合适的方法是将指向特定 *.so 文件的链接放在/usr/lib64

symlink libraries
  • 1 个回答
  • 481 Views
Martin Hope
ahmadreza1383
Asked: 2022-02-16 06:48:05 +0800 CST

opt/lampp/bin/httpd:加载共享库时出错:libcrypt.so.1:无法打开共享对象文件:没有这样的文件或目录

  • 6

我使用 Arch Linux (x86_64)

我今天使用以下命令更新了我的存储库

Sudo Packman -Syu

但是 xampp 程序不再运行

Stopping all servers...
Restarting all servers...
Starting MySQL Database...

Starting Apache Web Server...
Exit code: 8
Stdout:
apache config test fails, aborting
Stderr:

/opt/lampp/bin/httpd: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory

Starting ProFTPD...
Exit code: 8
Stdout:
proftpd config test fails, aborting
Stderr:

/opt/lampp/sbin/proftpd: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory

经过一番检查,我发现 libcrypt.so.1 文件存在

输出命令locate libcrypt.so.1

[ahmadreza@ahmadreza-sys ~]$ locate libcrypt.so.1
/usr/lib/libcrypt.so.1

文件的版本如下:

[root@ahmadreza-sys lib]# file libcrypto.so.1*
libcrypto.so.1.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=4c926b672d97886b123e03a008387aecf0786de4, stripped
[root@ahmadreza-sys lib]# 

输出命令sudo ldconfig -v | grep libcrypt

[ahmadreza@ahmadreza-sys ~]$ sudo ldconfig -v | grep libcrypt
ldconfig: Path `/usr/lib64' given more than once
(from <builtin>:0 and <builtin>:0)
ldconfig: Can't stat /usr/libx32: No such file or directory
    libcrypt.so.2 -> libcrypt.so.2.0.0
    libcrypto.so.1.1 -> libcrypto.so.1.1
    libcryptsetup.so.12 -> libcryptsetup.so.12.7.0
[ahmadreza@ahmadreza-sys ~]$ 

出局file /opt/lampp/bin/httpd

[ahmadreza@ahmadreza-sys ~]$ file /opt/lampp/bin/httpd 
/opt/lampp/bin/httpd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=00effd3a02918135bf3106612c2b59866e4f92fe, stripped
[ahmadreza@ahmadreza-sys ~]$ 

我该如何解决?

arch-linux libraries
  • 3 个回答
  • 10811 Views
Martin Hope
adigitoleo
Asked: 2021-11-26 02:57:03 +0800 CST

为什么 autoconf 找不到“libtcmalloc”?

  • 0

我正在尝试编译一个复杂的数值模拟软件。运行autoconf然后./configure ...(使用其他一些标志)后,我在输出中看到以下内容:

checking for malloc in -ltcmalloc... no
configure: WARNING: No tcmalloc support available.

进去后configure.in发现:

%zsh> grep 'tcmalloc' configure.in
    AC_CHECK_LIB(tcmalloc,malloc,,AC_MSG_WARN([No tcmalloc support available.]))

我安装了gperftools,我认为它应该提供 tcmalloc。我确实有一些类似的库:

%zsh> ldconfig -p|grep 'tcmalloc'
    libtcmalloc_minimal_debug.so.4 (libc6,x86-64) => /usr/lib/libtcmalloc_minimal_debug.so.4
    libtcmalloc_minimal_debug.so (libc6,x86-64) => /usr/lib/libtcmalloc_minimal_debug.so
    libtcmalloc_minimal.so.4 (libc6,x86-64) => /usr/lib/libtcmalloc_minimal.so.4
    libtcmalloc_minimal.so (libc6,x86-64) => /usr/lib/libtcmalloc_minimal.so
    libtcmalloc_debug.so.4 (libc6,x86-64) => /usr/lib/libtcmalloc_debug.so.4
    libtcmalloc_debug.so (libc6,x86-64) => /usr/lib/libtcmalloc_debug.so
    libtcmalloc_and_profiler.so.4 (libc6,x86-64) => /usr/lib/libtcmalloc_and_profiler.so.4
    libtcmalloc_and_profiler.so (libc6,x86-64) => /usr/lib/libtcmalloc_and_profiler.so
    libtcmalloc.so.4 (libc6,x86-64) => /usr/lib/libtcmalloc.so.4
    libtcmalloc.so (libc6,x86-64) => /usr/lib/libtcmalloc.so

我尝试添加libtcmalloc到列表中,configure.in但我得到:

checking for tcmalloc in -llibtcmalloc... ./configure: line 11516: WARNING:: command not found
no

有没有办法让 autoconfAC_CHECK_LIB检测我的 tcmalloc 库?

libraries autoconf
  • 1 个回答
  • 221 Views
Martin Hope
Roba Nath Basnet
Asked: 2021-10-04 21:05:28 +0800 CST

CentOS 8 中库的“文件太短”错误

  • 1

我在 CentOS 8 中遇到错误:

eror while loading libraries: /lib64/libgpm.so.2: file too short

我们如何解决这个问题?我尝试安装它几次,但它给出了同样的错误

centos libraries
  • 1 个回答
  • 284 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