草庐IT

linux - 使用 Linux 加载程序时 ldconfig 错误 :"is not a symbolic link"

运行时:sudo/sbin/ldconfig出现如下错误:/sbin/ldconfig:/usr/local/lib/isnotasymboliclink当我运行file命令时,会出现以下内容:file/usr/local/lib//usr/local/lib/:directory在/usr/local/lib/中,我使用了三个库。我在这里将它们称为lib1、lib2和lib3。现在,当我对我的二进制文件执行ldd时,结果:lib1.so=>notfoundlib2.so=>notfoundlib3.so=>/usr/local/lib/lib3.so(0x00216000)但它们都与

linux - 链接旧版本的 libc 以提供更大的应用程序覆盖率

Linux二进制文件通常动态链接到核心系统库(libc)。这使得二进制文件的内存占用非常小,但依赖于最新库的二进制文件不会在旧系统上运行。相反,链接到旧库的二进制文件将在最新系统上愉快地运行。因此,为了确保我们的应用程序在分发期间具有良好的覆盖率,我们需要找出我们可以支持的最旧的libc并将我们的二进制文件链接到它。我们应该如何确定可以链接到的最旧版本的libc? 最佳答案 找出可执行文件中的哪些符号正在创建对不需要的glibc版本的依赖。$objdump-pmyprog...VersionReferences:requiredfr

linux - 链接旧版本的 libc 以提供更大的应用程序覆盖率

Linux二进制文件通常动态链接到核心系统库(libc)。这使得二进制文件的内存占用非常小,但依赖于最新库的二进制文件不会在旧系统上运行。相反,链接到旧库的二进制文件将在最新系统上愉快地运行。因此,为了确保我们的应用程序在分发期间具有良好的覆盖率,我们需要找出我们可以支持的最旧的libc并将我们的二进制文件链接到它。我们应该如何确定可以链接到的最旧版本的libc? 最佳答案 找出可执行文件中的哪些符号正在创建对不需要的glibc版本的依赖。$objdump-pmyprog...VersionReferences:requiredfr

linux - linux动态链接器的 "no version information available"错误是什么意思?

在我们的产品中,我们发布了一些动态链接到“libpam”等系统库的linux二进制文件。在某些客户系统上,当程序运行时,我们在stderr上收到以下错误:./authpam:/lib/libpam.so.0:noversioninformationavailable(requiredbyauthpam)应用程序运行良好并执行动态库中的代码。所以这不是一个fatalerror,它实际上只是一个警告。我认为当系统安装的库缺少我们的可执行文件期望的东西时,这是来自动态链接器的错误。我对动态链接过程的内部了解不多......并且谷歌搜索该主题并没有多大帮助。:(有谁知道是什么导致了这个错误?.

linux - linux动态链接器的 "no version information available"错误是什么意思?

在我们的产品中,我们发布了一些动态链接到“libpam”等系统库的linux二进制文件。在某些客户系统上,当程序运行时,我们在stderr上收到以下错误:./authpam:/lib/libpam.so.0:noversioninformationavailable(requiredbyauthpam)应用程序运行良好并执行动态库中的代码。所以这不是一个fatalerror,它实际上只是一个警告。我认为当系统安装的库缺少我们的可执行文件期望的东西时,这是来自动态链接器的错误。我对动态链接过程的内部了解不多......并且谷歌搜索该主题并没有多大帮助。:(有谁知道是什么导致了这个错误?.

linux - 我可以在已编译的二进制文件中更改 'rpath' 吗?

我有一个计划用于废料堆的旧可执行文件,但它还没有。它依赖于一些已从我的环境中删除的库,但我有一些stub库可以正常工作。我想将此可执行文件指向这些stub库。是的,我可以设置LD_LIBRARY_PATH,但是这个可执行文件是从许多脚本和许多用户中调用的,我很想在一个地方修复它。我没有这方面的来源,而且很难得到。我在想-我可以编辑这个文件,使用一个ELF感知编辑器,并添加一个简单的PATH到rpath让它命中新的库吗?这可能吗,或者一旦你创建了一个ELF二进制文件,你将东西固定到位置并且它们不能移动? 最佳答案 有一个比chrpat

linux - 我可以在已编译的二进制文件中更改 'rpath' 吗?

我有一个计划用于废料堆的旧可执行文件,但它还没有。它依赖于一些已从我的环境中删除的库,但我有一些stub库可以正常工作。我想将此可执行文件指向这些stub库。是的,我可以设置LD_LIBRARY_PATH,但是这个可执行文件是从许多脚本和许多用户中调用的,我很想在一个地方修复它。我没有这方面的来源,而且很难得到。我在想-我可以编辑这个文件,使用一个ELF感知编辑器,并添加一个简单的PATH到rpath让它命中新的库吗?这可能吗,或者一旦你创建了一个ELF二进制文件,你将东西固定到位置并且它们不能移动? 最佳答案 有一个比chrpat

linux - 如何打印 ld(linker) 搜索路径

按搜索顺序打印ld查找的搜索路径的方法是什么。 最佳答案 您可以通过执行以下命令来做到这一点:ld--verbose|grepSEARCH_DIR|tr-s';'\\012gcc将一些额外的-L路径传递给链接器,您可以使用以下命令列出这些路径:gcc-print-search-dirs|sed'/^lib/b1;d;:1;s,/[^/.][^/]*/\.\./,/,;t1;s,:[^=]*=,:;,;s,;,;,g'|tr\;\\012建议使用ld.so.conf和ldconfig的答案不正确,因为它们引用运行时动态链接器搜索的路径

linux - 如何打印 ld(linker) 搜索路径

按搜索顺序打印ld查找的搜索路径的方法是什么。 最佳答案 您可以通过执行以下命令来做到这一点:ld--verbose|grepSEARCH_DIR|tr-s';'\\012gcc将一些额外的-L路径传递给链接器,您可以使用以下命令列出这些路径:gcc-print-search-dirs|sed'/^lib/b1;d;:1;s,/[^/.][^/]*/\.\./,/,;t1;s,:[^=]*=,:;,;s,;,;,g'|tr\;\\012建议使用ld.so.conf和ldconfig的答案不正确,因为它们引用运行时动态链接器搜索的路径

linux - "/usr/bin/ld: cannot find -lz"

我正在尝试在Ubuntu10.04下编译Android源代码。我收到一条错误消息,/usr/bin/ld:cannotfind-lz你能告诉我如何解决它吗?cannotfind-lz是什么意思?以下是完整的错误信息:external/qemu/Makefile.android:1101:warning:overridingcommandsfortarget`external/qemu/android/avd/hw-config-defs.h'external/qemu/Makefile.android:933:warning:ignoringoldcommandsfortarget`e