标签: glibc

为什么某些共享库以及如何运行,就好像它们是可执行文件一样?

在 32 位 Linux 系统上,调用这个

$ /lib/libc.so.6
Run Code Online (Sandbox Code Playgroud)

而在 64 位系统上,这

$ /lib/x86_64-linux-gnu/libc.so.6
Run Code Online (Sandbox Code Playgroud)

在 shell 中,提供如下输出:

GNU C Library stable release version 2.10.1, by Roland McGrath et al.
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.4.0 20090506 (Red Hat 4.4.0-4).
Compiled on a Linux >>2.6.18-128.4.1.el5<< system on 2009-08-19.
Available extensions:
    The C …
Run Code Online (Sandbox Code Playgroud)

linux version executable glibc shared-library

70
推荐指数
2
解决办法
3万
查看次数

如何在 CentOS 6.5 中将 glibc 更新到 2.14

我想在我的 CentOS 6.5 机器上安装 Android NDK。但是当我运行程序时,它说它需要 glibc 2.14 才能运行。我的 CentOS 6.5 只安装了 Glibc 2.12。所以我尝试通过以下方式更新 glibc:

$ sudo yum update glibc
Run Code Online (Sandbox Code Playgroud)

但是之后我发现glibc版本仍然是2.12,而不是2.14。

$ ldd --version
ldd (GNU libc) 2.12
Run Code Online (Sandbox Code Playgroud)

我认为 glibc 2.14 在 CentOS 存储库上可能不可用。那么如何在 CentOS 6.5 上将其更新为 glibc 2.14?

centos upgrade glibc

55
推荐指数
3
解决办法
21万
查看次数

i686 和 x86_64 包有什么区别?

我有一台带有 glibc i686 和 x86_64 的机器,还有一个非常烦人的 glibc 问题。

在一台计算机上安装两个同名的库是否正常?我怎么知道执行的是哪个库?

直到最近,我才相信 x86_64 是 i686。好吧,我一定是弄错了,但为什么呢?

    [root@machin ~]# yum info glibc
    Loaded plugins: rhnplugin, security
    This system is not registered with RHN.
    RHN support will be disabled.
    Excluding Packages in global exclude list
    Finished
    Installed Packages
    Name       : glibc
    Arch       : i686
    Version    : 2.5
    Release    : 42
    Size       : 12 M
    Repo       : installed
    Summary    : The GNU libc libraries.
    License    : LGPL
    Description: The glibc package contains standard libraries which are …
Run Code Online (Sandbox Code Playgroud)

yum package-management glibc cpu-architecture

44
推荐指数
2
解决办法
9万
查看次数

在 linux 上使用“&gt;&gt;”时,bash 是否会打开 O_APPEND 中的文件?

如果我们使用,echo 1234 >> some-file则文档说明输出已附加。

我的猜测是,如果 some-file 不存在,那么 O_CREAT 将创建一个新文件。如果>使用,则 O_TRUNC 将截断现有文件。

的情况下 >>:文件是否会被打开为 O_WRONLY(或 O_RDWR)并寻求结束并完成写入操作,模拟 O_APPEND?还是将文件作为 O_APPEND 打开,将其留给内核以确保发生附加?

我问这个是因为当输出文件来自 NFS 挂载点时,保存进程正在覆盖由 echo 插入的一些标记,并且 NFS 文档说服务器不支持 O_APPEND,因此客户端内核将不得不处理它。我猜保护进程正在使用 O_APPEND ,但不确定 bash>>在 linux 上,因此在这里提出问题。

linux nfs glibc files

38
推荐指数
4
解决办法
3682
查看次数

为什么几乎每个程序都在抱怨我的语言环境?

我正在使用 Arch Linux,并且我已经按照wiki 上关于设置我的语言环境的说明进行操作。

几乎每个运行的程序都会抱怨语言环境——甚至locale. 它看起来像这样:

% locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en-US
LC_TIME=en-US
LC_COLLATE="POSIX"
LC_MONETARY=en-US
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT=en-US
LC_IDENTIFICATION="POSIX"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

或者:

% perl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_TIME = "en-US",
    LC_NUMERIC = "en-US",
    LC_MONETARY = "en-US",
    LC_MEASUREMENT = "en-US",
    LC_CTYPE = "en_US.UTF-8",
    LANG = (unset)
are supported …
Run Code Online (Sandbox Code Playgroud)

arch-linux glibc locale

31
推荐指数
2
解决办法
4万
查看次数

如何处理 Arch Linux 上缺少 libcrypt.so.1 的情况?

如何处理libcrypt.so.1Arch Linux 上的缺失问题?

\n

尝试运行openoffice4LibreOffice二进制文件)会导致:

\n
/opt/openoffice4/program/javaldx: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory\n/opt/openoffice4/program/soffice.bin: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n

该文件libcrypt.so.1确实不存在。然而,有:

\n
\xe2\x94\x94[/usr/lib]> ls -al libcrypt*\nlrwxrwxrwx 1 root root      16 Dec 18 11:31 libcrypto.so -> libcrypto.so.1.1\n-rwxr-xr-x 1 root root 2999144 Dec 18 11:31 libcrypto.so.1.1\nlrwxrwxrwx 1 root root      23 Feb  3 12:16 libcryptsetup.so …
Run Code Online (Sandbox Code Playgroud)

arch-linux pacman glibc

29
推荐指数
1
解决办法
3万
查看次数

解决这个 glibc 问题的最佳方法是什么?

我管理一个 Gentoo Hardened box,它使用文件功能来消除对 setuid-root 二进制文件的大部分需求(例如,/bin/ping有 CAP_NET_RAW 等)。

事实上,我剩下的唯一二进制文件就是这个:

abraxas ~ # find / -xdev -type f -perm -u=s
/usr/lib64/misc/glibc/pt_chown
abraxas ~ # 
Run Code Online (Sandbox Code Playgroud)

如果我删除了 setuid 位,或者重新挂载我的根文件系统nosuid,sshd 和 GNU Screen 将停止工作,因为它们调用grantpt(3)了它们的主伪终端,而 glibc 显然会执行这个程序来 chown 和 chmod 下的从伪终端/dev/pts/,而 GNU Screen 关心这个函数的时间失败。

问题是,手册页grantpt(3)明确指出,在 Linux 下,devpts挂载文件系统后,不需要此类帮助程序二进制文件;内核会自动将slave的UID & GID设置为打开的进程的真实UID & GID /dev/ptmx(通过调用getpt(3))。

我编写了一个小示例程序来演示这一点:

#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(void)
{
    int master; …
Run Code Online (Sandbox Code Playgroud)

security setuid glibc linux-kernel

26
推荐指数
1
解决办法
1151
查看次数

为什么 Linux 内核没有像 glibc 那样优化功能(例如,memchr、strchr)?

当我尝试自己实现C字符串库时,发现glibc和Linux内核在实现某些功能的方式上有所不同。例如,glibc memchrglibc strchr使用一些技巧来加速函数,但内核 memchr内核 strchr没有。为什么 Linux 内核函数没有像 glibc 那样优化?

libraries glibc linux-kernel

25
推荐指数
2
解决办法
4785
查看次数

需要在 Wheezy 上安装 glibc &gt;= 2.14

我试图让量角器工作以执行 e2e 角度测试,但量角器需要Selenium,而后者需要ChromeDriver,后者需要glibc2.14。我目前的开发箱运行的是glibc2.13附带的 Debian Wheezy 。我已经读到切换到 Debian 的不稳定分支将提供对 的访问glib-2.14,但据我所知,不稳定非常......不稳定。

有什么方法可以升级glibc到 2.14 或 2.15 而不会破坏一切?或者如果事情开始破裂,是否可以从不稳定的 Debian 分支切换回来?

12:15:22.784 INFO - Executing: [new session: {browserName=chrome}] at URL: /session)
12:15:22.796 INFO - Creating a new session for Capabilities [{browserName=chrome}]
/home/chris/projects/personal/woddy/client/selenium/chromedriver:     /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by      /home/chris/projects/personal/woddy/client/selenium/chromedriver)
/home/chris/projects/personal/woddy/client/selenium/chromedriver: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/chris/projects/personal/woddy/client/selenium/chromedriver)
12:15:43.032 WARN - Exception thrown
java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException:  java.lang.reflect.InvocationTargetException
Run Code Online (Sandbox Code Playgroud)

debian glibc

23
推荐指数
2
解决办法
15万
查看次数

新的 glibc 版本可以与旧内核一起使用吗?

显然可以编译 glibc--enable-kernel以支持旧的内核版本。但是,我无法找到有关特定 glibc 版本支持哪些内核版本的信息。理想情况下,我希望看到每个 glibc (2.x) 和内核 (2.6.x) 版本的兼容性矩阵。它存在吗?

如果它不存在,也许是因为每个 glibc 版本(在过去 5 年左右)都支持自 2.6.0 以来的所有内核?

(Arch = x86-64,如果这很重要)

linux kernel compatibility glibc

22
推荐指数
3
解决办法
2万
查看次数