Questions tagged «libraries»

库是程序可以使用的功能的集合。它们可以由程序动态加载,也可以编译到程序中。

1
二进制文件和库之间有什么区别?
我正在尝试了解文件系统层次结构标准。我已经查找了二进制文件和库,并且据我目前的理解: 二进制文件是二进制格式的计算机可读代码文件,它们直接用位控制CPU和处理器。 为了方便起见,库是可由各种程序使用的函数-例如,当您需要PHP Javascript中的模块时。 这种理解正确吗?如果是这样,为什么我们仍将库和二进制文件分开?有些库是二进制文件,对不对?还有一些二进制文件(cat,less,date,rm,cp等)被使用和重用,就好像它们是库一样。有人可以帮助解释它们的区别,并帮助我为这两个单词找到更好的定义吗?谢谢。
11 files  libraries  binary  fhs 

1
我如何在Linux上以非root身份维护单独的(较新的)glibc / gcc /…堆栈
我们的计算集群运行的CentOS版本非常旧,带有旧的内核(2.6.18),当然还有旧的库和二进制文件。因为更新整个事情需要在所有节点上进行大量工作,所以这不是一个选择。 我正在尝试编译和使用需要C++11(因此需要更高版本的gcc(和/或clang)版本)的程序。因为我根本不想弄乱系统,所以我想以某些本地目录树中的非root用户身份进行操作。 问题是,这gcc需要glibc比机器上存在的机器更新的机器。因此,我需要保持一个独立的,新版本glibc在我的本地lib/所描述的树,可能是在这里。 我迷路的地方是如何将本地库的路径“硬编码”为所有所需的二进制文件,例如gcc,g++等等。将LD_LIBRARY_PATH设置为我的本地lib/树会导致所有系统二进制文件不再起作用(ELF file OS ABI invalid),因为它们要使用尚未针对其编译的new libm.so/ libc.so。 所以,把它包起来:什么是保持一个较新的,局部的开发堆栈(含适当的方式glibc,gcc并行等)旧系统没有乱搞的根源? 附带提出一个问题:设置LD_LIBRARY_PATH作为SE的解决方案发布到整个SE上glibc。对我来说,当我尝试执行任何系统二进制文件(如ls)时,都会导致上述错误。怎么来的?我做错了什么还是预期的行为?

3
如何找到提供我需要的依赖关系的Fedora软件包?
有时我会安装存储库中不存在的软件,然后遇到不满意的依赖关系的问题。该错误通常会告诉我缺少哪个库或命令。然后我运行一个yum search。如果软件包名称与所需的库/命令名称一致,则很容易。 当我在百胜中找不到任何东西时,问题就来了。我开始在Web上四处搜索,而且经常会找到指向该库的链接。但是我不知道是否信任这些站点,如果我下载了该库,该在哪里复制该库,它到底应该做什么,等等。通常应该将其用于其他发行版或其他Fedora版本,然后我不知道它们是否可以与我的版本一起使用。我怀疑这些库可能已经存在于存储库中的某些软件包中,我宁愿从那里那里获得它们,也不要从随机的Google站点中获得它们。 如果我有一个库的名称,如何找到它属于哪个软件包?例如,现在我需要库libpng12.so.0,如何获取它?如果它不是一个库,而是一个命令,我如何找到提供它的软件包?

2
识别正在使用我刚替换的库的旧版本的正在运行的程序
在安装更新以解决CVE-2014-0160(OpenSSL Heartbleed错误)之后,我必须小心重启可能正在使用libssl的所有内容-许多服务(例如Apache和我的VPN软件)仍然加载了旧的易受攻击的libssl ,而我的包裹管理员没有尝试纠正这一问题。 这让我开始思考:更新共享库后,如何可靠地找出当前正在运行的程序中链接了旧版本的库?我确信必须有一种方法可以在链接器级别或文件描述符级别查询正在运行的进程,以确定它们已加载的给定共享库的实例与当前磁盘上的实例是否相同。

1
查找链接到库的库版本
我有一个在未知的Ubuntu机器上编译的库,并且我想确定该机器在编译时所用的Ubuntu版本。 我的想法是尝试找出所使用的不同库(例如内核)的版本,因为它们会随着不同的发行版而发生变化。我尝试使用nm和ldd,但似乎找不到任何相关信息。 有什么建议么?

1
vdso共享库(linux-vdso.so)是包含内核对象代码(系统调用)的库吗?
我注意到我编译到gcc的所有程序都链接到vdso库。这个库是否包含对内核的系统调用(如mmap()和fork()以及其他系统调用)的库? 我知道系统调用不是GNU C标准库的功能,因此它们的目标代码必须位于在编译时与应用程序链接的某个库中吗? 那么vdso是那个库吗?

1
我应该安装ibus-1.0来构建Webdriver吗?
在构建一个库(Webdriver)的过程中,出现以下错误: Package ibus-1.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `ibus-1.0.pc' to the PKG_CONFIG_PATH environment variable No package 'ibus-1.0' found 似乎是由于Webdriver的源代码中的以下行: pkg-config ibus-1.0 --libs 运行它时会产生相同的输出。 因此,我ibus 使用其网站上的安装说明进行了安装: sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4 但是调用后我仍然得到相同的输出pkg-config ibus-1.0 --libs。我应该安装ibus 1.0来构建该库吗?如果是,我在哪里可以找到它?它似乎没有出现在ibus的下载列表中? 我的操作系统是Ubuntu 13.04

1
取消ld.conf.so.d库路径解析的优先级
从一个单独的问题以及有关该主题的其他文章看来ld.so.conf.d,在通过/lib或提供的任何库之前,总是会解决定义的其他库路径(即,在名称冲突的情况下,例如覆盖系统库时)/usr/lib。 是否有可能通过ld.so.conf.d某种机制创建一个系统范围的路径,在该路径下可以以最低/最新的分辨率级别来解析库?例如,我希望库/ParanoidAndroid/可以被解析,但是我希望该路径成为搜索它们的最后一个位置(即,优先于存储在中的库中/lib和/usr/lib之上的库/ParanoidAndroid/),因此现在的查找顺序为: LD_LIBRARY_PATH中的目录; 来自/etc/ld.so.conf的目录; / lib; / usr / lib。 / ParanoidAndroid;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.