首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当尝试使用通过ld --verbose获得的默认链接器脚本时,为什么会出现/usr/bin/ld:内部错误../../ld/ldlang.c 4986?

当尝试使用通过ld --verbose获得的默认链接器脚本时,出现/usr/bin/ld:内部错误../../ld/ldlang.c 4986的错误,可能是由于以下原因导致的:

  1. 链接器版本不兼容:链接器版本与当前系统或库文件不兼容,导致出现内部错误。解决方法是更新或更换适用于当前系统的链接器版本。
  2. 链接器配置错误:链接器的配置文件可能存在错误或损坏,导致无法正确解析链接脚本。解决方法是检查链接器配置文件的正确性,并尝试修复或重新配置链接器。
  3. 缺少依赖库文件:链接器在解析链接脚本时可能需要依赖的库文件,但系统中缺少了这些库文件,导致出现内部错误。解决方法是安装或更新所需的依赖库文件。
  4. 链接脚本错误:通过ld --verbose获得的默认链接器脚本可能存在错误或不完整,导致链接器无法正确解析。解决方法是检查链接脚本的正确性,并尝试修复或替换链接脚本。

总结起来,出现/usr/bin/ld:内部错误../../ld/ldlang.c 4986的错误可能是由于链接器版本不兼容、链接器配置错误、缺少依赖库文件或链接脚本错误等原因导致的。解决方法包括更新链接器版本、检查配置文件和链接脚本的正确性,以及安装所需的依赖库文件。请注意,以上答案仅供参考,具体解决方法可能因环境和情况而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

linux ldd命令源代码,Linux中ldd命令用法详解

例如: ldd /bin/bash 但是ldd本身不是一个程序,而仅是一个shell脚本: $ which ldd /usr/bin/ldd $ file /usr/bin/ldd /usr/bin/ldd...ldd可以获得共享库文件,其实是通过读取ldconfig命令组建起来文件(/etc/ld.so.cache)。 默认共享库文件搜索/lib优先于/usr/lib,而且也只有这个2个目录。...LD_TRACE_LOADED_OBJECTS环境变量不为空,任何可执行程序在运行时,它都会只显示模块dependency,而程序并不真正执行。...工作原理,其实质是通过ld-linux.so(elf动态库装载)来实现。...我们知道,ld-linux.so模块先于executable模块程序工作,并获得控制权,因此当上述那些环境变量被设置ld-linux.so选择了显示可执行模块dependency。

3.3K20

ldd命令 ubuntu_Linux ldd 命令 command not found ldd 命令详解 ldd 命令未找到 ldd 命令安装 – CommandNotFound ⚡️ 坑否…[通俗易

ldd 能够显示可执行模块 dependency,其原理是通过设置一系列环境变量,如下:LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION...、LD_VERBOSE 等。... LD_TRACE_LOADED_OBJECTS 环境变量不为空,任何可执行程序在运行时,它都会只显示模块 dependency,而程序并不真正执行。...ldd 显示可执行模块 dependency 工作原理,其实质是通过 ld-linux.so(elf 动态库装载)来实现。...ld-linux.so 模块先于 executable 模块程序工作,并获得控制权,因此当上述那些环境变量被设置ld-linux.so 选择了显示可执行模块 dependency。

2.2K30
  • ldd 和ldconfig

    ldconfig 命令用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列目录下,搜索出可共享动态链接库(格式如前介绍,lib*.so*)...,进而创建出动态装入程序(ld.so)所需连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序动态链接库名字列表.... LD_TRACE_LOADED_OBJECTS环境变量不为空,任何可执行程序在运行时,它都会只显示模块dependency,而程序并不真正执行。...dependency工作原理,其实质是通过ld-linux.so(elf动态库装载)来实现。...我们知道,ld- linux.so模块先于executable模块程序工作,并获得控制权,因此当上述那些环境变量被设置ld-linux.so选择了显示可执 行模块dependency。

    83930

    linux基础50——ldd

    注意,ldd 本身不是一个二进制程序,而是一个 Shell 脚本使用文本编辑 vim 可以查看其内容,具体目录可以使用 which 命令查看: [root@192 pthread]# which ldd.../usr/bin/ldd 我们知道,Linux 动态库装载 ld-linux.so 模块先于 executable 模块工作,并获得控制权,ld-linux.so 会通过系统环境变量设置,选择只显示可执行模块...相关环境变量有: LD_TRACE_LOADED_OBJECTS LD_WARN LD_BIND_NOW LD_LIBRARY_VERSION LD_VERBOSE LD_DEBUG ldd 默认开启环境变量是...=yes -u, --unused -> LD_DEBUG="unused" -v, --verbose -> LD_VERBOSE=yes 比如设置LD_TRACE_LOADED_OBJECTS环境变量不为空...依赖环境变量来影响 ld-linux.so工作方式,使得可执行模块加载显示其依赖动态库。

    1.1K30

    Linux共享库、静态库、动态库详解

    标准判断方法是先调用dlerror(),清除以前可能存在错误,然后调用dlsym()来访问一个symbol,然后再调用dlerror()来判断是否出现错误。...我建议将链接名称作为与soname符号链接,因为在大多数情况下,如果您更新库,那么您希望在链接自动使用它。我问HJ Lu为什么ldconfig不会自动设置链接名称。...GNU标准建议默认安装/ usr / local / lib中所有库,分发源代码(所有命令都应该进入/ usr / local / bin。它们还定义了覆盖这些默认值和调用安装例程约定。...将LD_DEBUG设置为“帮助”,然后尝试运行程序将列出可能选项。再次,LD_DEBUG不适用于正常使用,但在调试和测试可以方便。 3.3.3。...但是,如果一个程序中断更新到保持相同soname库,您可以强制它使用库版本通过将旧库复制到某个地方,重命名该程序(比如说旧名称加上“.orig ''),然后创建一个小“包装脚本,该脚本重置库以使用并调用真实

    8.9K11

    【Linux】《how linux work》第十五章 开发工具

    这些错误消息中最重要部分用粗体表示。 链接程序检查badobject.o目标文件,它找不到出现在粗体中函数,因此无法创建可执行文件。...动态运行时链接遇到这个变量,它通常需要多次搜索每个指定目录全部内容,这会导致性能大幅下降,更重要是,由于运行时链接会在这些目录中搜索每个程序,可能会出现冲突和不匹配库。...在这里,make使用你定义CC而不是默认编译cc。 命令行宏在测试预处理定义和库非常方便,特别是在讨论稍后CFLAGS和LDFLAGS宏。...开头可执行文本文件都被视为脚本。 在这个前缀之后路径名是脚本语言解释可执行文件。Unix尝试运行以#!开头可执行文件,它会将#!之后程序作为标准输入,并执行该程序。...例如,假设你将前面的脚本命名为myscript。如果tail实际上在你系统上/bin而不是/usr/bin中,那么运行myscript将产生以下错误: bash: .

    10510

    程序一定要从main函数开始运行吗?

    类型,这种未定义符号都是因为该目标文件中有关于他们重定位项,在链接扫描完所有的输入目标文件后,所有这种未定义符号都应该能在全局符号表中找到,否则报符号未定义错误。...注意:我们代码里明明用是printf,为什么它却引用了puts符号呢,因为编译默认情况下会把只用一个字符串参数printf替换成puts, 可以节省格式解析时间,使用-fno-builtin会关闭这个内置函数优化选项...Tips: 现在程序和库通常来讲都很大,一个目标文件可能包含成百上千个函数或变量,需要用到某个目标文件任意一个函数或变量,就需要把它整个目标文件都链接进来,也就是说那些没有用到函数也会被链接进去...如何指定程序入口 在ld链接过程中使用-e参数可以指定程序入口,由于一段简短printf函数其实都依赖了好多个链接库,我们也不太方便使用链接脚本将目标文件与所有这些依赖库进行链接,所以使用下面这段内嵌汇编程序来打印一段字符串.../test hello 如何使用自定义链接脚本实现自定义段功能 在ld链接过程中使用-T参数可以指定链接脚本通过ld -verbose可以查看默认链接脚本,原文太长,这里简单截取了一部分: $

    1.2K30

    Linux下解决.configure ,make,make install报错

    注意您运行编译好软件LD_LIBRARY_PATH必须包含您库文件夹路径 2。...如果安装了尝试用这个命令 export CC=”/usr/bin/cc” 如果要永久性的话,你可以将这个命令添加/etc/profile中(任何用户登陆进来时会执行这个文件里很多命令)这样,...脚本检查libtool支持编辑。...尝试获得最新版软件(使用CVS或者SVN或者源,或者下载每日快照)并且常识编译查看时候他们已经修复了bug。 make报错还可能由特定库/程序错误版本造成。...注意,您只是在设置prefix,二进制文件安装杂prefix子目录下,头文件也是~使用了上述frefix,你可以在/usr/bin找到二进制文件 2.当我想安装一个老版本包,我在互联网上找打不到源代码包

    28.6K21

    ubuntu 14.04 下安装 PyTesser 进行OCR识别

    ,为了让动态链接库为系统所共享,还需运行动态链接管理命令--ldconfig  ldconfig 命令用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf...内所列目录下,搜索出可共享动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序动态链接库名字列表.... (2) -n : 用此选项,ldconfig仅扫描命令行指定目录,不扫描默认目录(/lib,/usr/lib),也不扫描配置文件/etc/ld.so.conf所列目录. (3) -N : 此选项指示.../ld.so.cache,此文件存放已排好序可共享动态链接列表. (7) -r ROOT : 此选项改变应用程序根目录为ROOT(是调用chroot函数实现).选择此项,系统默认配置文件.../etc/ld.so.conf,实际对应为 ROOT/etc/ld.so.conf.如用-r /usr/zzz,打开配置文件/etc/ld.so.conf,实际打开是/usr/zzz/etc/ld.so.conf

    1.2K10

    应急响应系列之Linux库文件劫持技术分析

    一、我与库文件劫持前世今生 0x01 菜逼阶段 Linux库文件劫持这种案例在今年9月份遇到过相应案例,当时情况是有台服务不断向个可疑IP发包,尝试建立连接,后续使用杀软杀出木马,重启后该服务还是不断发包...0x03 深入学习与了解原理 大概过了一个月,内部同事也遇到相同问题,协助处置,经过学习与分析,发现前期自己思路完全错误了,以为是内核问题导致netstat无法查看到PID,并且前期太依赖工具(rootkit...应用程序在通过系统接口调用内核时会预先加载动态链接库, 即使程序不依赖这些动态链接库,LD_PRELOAD环境变量和/etc/ld.so.preload配置文件中指定动态链接库依然会被加载。...3.3 修改动态链接劫持分析 3.3.1 如何实现 正常情况下,相关系统功能默认调用/etc/ld.so.preload这个库文件,但是也存在这个默认库文件被修改情况,所以我们需要分析相关系统命令默认调用库文件来分析其是否被修改...4.3.3 分析修改默认动态链接来实现劫持 使用strace进行跟踪可以看到其默认库文件被修改为/bin/.Kv8Xqykz,这个时候相关默认库被修改了 ?

    2.1K10

    基于 Wazuh-常见主机入侵检测方法

    suid 后门 一个文件所属主 x 标志位 s(set uid 简称 suid) ,且所属主为 root 执行该文件,其实是以 root 身份执行。.../column/162604.html linux 操作系统动态链接库在加载过程中,动态链接先读取 LDPRELOAD 环境变量和默认配置文件 /etc/ld.so.preload,并将读取到动态链接库文件进行预加载...,即使程序不依赖这些动态链接库,LDPRELOAD 环境变量和 /etc/ld.so.preload 配置文件中指定动态链接库依然会被装载,这样就导致了动态链接库文件可以被当做后门使用。.../usr/sbin/sshd, 脚本执行到 getpeername 这里时候,正则匹配失败,于是执行下一句,启动 /usr/bin/sshd,这是原始 sshd。...原始 sshd 监听端口建立了 tcp 连接后, fork 一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认位置 /usr/sbin/sshd,这样子控制权又回到脚本了。

    9.5K50

    GoAhead环境变量注入复现踩坑记

    这个老漏洞原理也很简单,就是GoAhead在处理CGI请求,将用户传入参数作为环境变量了。这样,通过LD_PRELOAD就可以劫持CGI进程动态链接库,进而执行任意代码。...我们目的是在服务上上传一个可控内容文件,然后将环境变量LD_PRELOAD设置为这个文件路径,这样来劫持动态链接库。很容易想到另一个方法就是通过上传文件形式来创建文件。...和PHP一样,GoAhead在遇到上传表单时候,先将这个上传文件保存在一个临时目录下,待脚本程序处理完成后删掉这个临时文件。...这就是第三个坑:攻击使用动态链接库不能过大,否则可能导致服务端出错,直接断开链接。 我们可以在gcc时候增加-s参数来缩小payload体积: gcc -s -shared -fPIC ....:8080/cgi-bin/test 但我尝试了从4开始到100所有的文件描述符,都无法完成劫持,查看日志无非是如下几种错误: ERROR: ld.so: object '/proc/self/fd/7

    55520

    LD_LIBRARY_PATH详解,从此不害怕安装C语言源代码软件(欢迎海南大学51粉丝)

    除了默认路径之外其他路径。...执行函数动态链接.so,如果此文件不在缺省目录下 /lib和/usr/lib,那么就需要指定环境变量LD_LIBRARY_PATH 假如现在需要在已有的环境变量上添加新路径名,则采用如下方式: LD_LIBRARY_PATH.../lib/:$LD_LIBRARY_PATH ¨G1G /usr/bin/ld: cannot find -llzma collect2: error: ld returned 1 exit status...lib/:$LIBRARY_PATH 为什么修改LD_LIBRARY_PATH呢 因为运行时动态库搜索路径先后顺序是: 1.编译目标代码指定动态库搜索路径; 2.环境变量LD_LIBRARY_PATH...指定动态库搜索路径; 3.配置文件/etc/ld.so.conf中指定动态库搜索路径; 4.默认动态库搜索路径/lib和/usr/lib; 这个顺序是compile gcc写在程序内,通常软件源代码自带动态库不会太多

    4.3K20

    linux动态库和静态库

    再找默认库目录 /lib /usr/lib /usr/local/lib,这是当初compile gcc写在程序内。 三、动态链接、执行时搜索路径顺序: 1....配置文件/etc/ld.so.conf中指定动态库搜索路径; 4. 默认动态库搜索路径/lib; 5. 默认动态库搜索路径/usr/lib。...四、静态库和动态链接库同时存在,gcc/g++默认链接是动态库: 一个库同时存在静态库和动态库,比如libmysqlclient.a和libmysqlclient.so同时存在:...如果使用 -lbase -lchild,在编译出现一些函数undefined,而这些函数实际上已经在base中已经定义; 为什么会有库依赖问题?...2、如果f是一个静态库(.a),那么链接尝试匹配U中未解析符号与静态库成员(静态库成员就是.o文件)定义符号。

    12.4K20

    linux之ldconfig工具使用

    ldconfig是一个动态链接库管理命令 为了让动态链接库为系统所共享,还需运行动态链接管理命令--ldconfig ldconfig  命令用途,主要是在默认搜寻目录(/lib和/usr...ldconfig可用选项说明如下: (1) -v或--verbose : 用此选项,ldconfig将显示正在扫描目录及搜索到动态链接库,还有它所创建连接名字....(2) -n : 用此选项,ldconfig仅扫描命令行指定目录,不扫描默认目录(/lib,/usr/lib),也不扫描配置文件/etc/ld.so.conf所列目录.....如用-r /usr/zzz,打开配置文件 /etc/ld.so.conf,实际打开是/usr/zzz/etc/ld.so.conf文件.用此选项,可以大大增加动态链接库管理灵活性...总之,就是不管做了什么关于library变动后,最好都ldconfig一下,不然会出现一些意想不到结果。不会花太多时间,但是省很多

    1.7K10

    记一次Linux挖矿病毒清除

    起因是同学过年期间因阿里云服务Redis弱口令(好像是没设密码)被提权植入了挖矿病毒,CPU长期占用100%。 登录服务后,首先使用Top命令,查看CPU占用。 ?...通过crontab -r删除所有定时任务。 将定时任务中出现2.jpg下载下来,发现其实是shell脚本。部分内容如下(完整见附件): #!...在 Linux 操作系统动态链接库加载过程中,动态链接读取 LD_PRELOAD 环境变量值和默认配置文件 /etc/ld.so.preload 文件内容,并将读取到动态链接库进行预加载,即使程序不依赖这些动态链接库...——段落引自《警惕利用 Linux 预加载型恶意动态链接后门》 查看该文件。 ? 我们尝试删除 ld.so.preload。提示权限不足。 ?...活学活用,在2.jpg脚本用,看到了大量chattr -i以及chattr +i命令,尝试使用 chattr -i ld.so.preload,再进行rm操作就可以成功删除了。

    10K32

    Binary程序分析查看类命令

    值得注意是ldd不是一个可执行程序而只是一个shell脚本: cat whereis ldd | cut -f 2 -d ' ',ldd显示可执行模块dependency(所属)工作原理,其实质是通过...ld-linux.so(elf动态库装载)来实现; 它能够显示可执行模块dependency(所属)(所属),其原理是通过设置一系列环境变量,如下:LD_TRACE_LOADED_OBJECTS...、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION、LD_VERBOSE等。...LD_TRACE_LOADED_OBJECTS环境变量不为空,任何可执行程序在运行时,它都会只显示模块dependency(所属),而程序并不真正执行。...我们知道ld-linux.so模块先于executable模块程序工作,并获得控制权,因此当上述那些环境变量被设置ld-linux.so选择了显示可执行模块dependency(所属)。

    71110

    Linux命令(65)——ld命令

    这仅在生成动态链接ELF可执行文件才有意义。默认动态链接通常是正确,除非您知道正在做什么,否则不要使用该选项。...如果输出格式支持Unix样式幻数,则将输出标记为"NMAGIC" -noinhibit-exec:生成输出文件,即使出现非致命链接错误。通常,如果链接链接过程中遇到错误,它将不会生成输出文件。...链接大型可执行文件,如果ld耗尽内存空间,则可能需要使用该选项 -O :对于非零优化等级,ld将优化输出。此操作会比较耗时,应该在生成最终结果使用。...此脚本将替换ld默认链接脚本(而不是添加到其中),因此脚本必须指定输出文件所需所有内容。...,比如C语言库libc.a,所以使用ld进行链接,需要注意添加较长命令选项,不然会报链接错误

    17.5K13

    ldd命令 ubuntu_ldd命令

    /ldd命令通常使用”-v”或”–verbose”选项来显示所依赖动态连接库尽可能详细信息。...2.龙芯电脑中更新了库文件,经常会引起某些软件无法使用,可以通过ldd命令来检查软件需要那些共享库支持,如:以前在安装apt-get install devscripts软件安装更新了很多库,结果导致...知识点: 1、如果使用 ldd 命令没有找到对应共享库文件和其具体位置,可能是两种情况引起: 共享库没有安装在该系统中; 共享库保存在 /etc/ld.so.conf 文件列出搜索路径之外位置...通常情况下,许多开放源代码程序或函数库都会默认将自己安装到 /usr/local 目录下相应位置(如:/usr/local/bin 或 /usr/local/lib),以便与系统自身程序或函数库相区别...而许多 Linux 系统 /etc/ld.so.conf 文件中默认又不包含 /usr/local/lib。因此,往往会出现已经安装了共享库,但是却无法找到共享库情况。

    65830
    领券