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

为什么nm libc.so没有报告任何符号?

nm libc.so没有报告任何符号的原因可能是因为该库文件中没有导出任何符号。在Linux系统中,库文件通常包含一组函数、变量或其他符号,这些符号可以被其他程序引用和使用。通过使用nm命令可以查看库文件中的符号列表。

然而,如果nm命令在libc.so库文件中没有找到任何符号,可能有以下几种可能的原因:

  1. 库文件被剥离:库文件可能是一个被剥离的库,即在编译时使用了-fvisibility=hidden选项,这样可以隐藏库文件中的符号,使其不可见。这样做可以减小库文件的大小,并提高程序的安全性。
  2. 静态链接:库文件可能是一个静态库,即在编译时将库文件的代码和数据直接嵌入到可执行文件中,而不是在运行时动态加载。静态库在链接时会被完全合并到可执行文件中,因此不会产生符号表。
  3. 符号被剔除:库文件中的符号可能被编译器或链接器剔除,这可能是由于优化或其他配置选项导致的。在这种情况下,库文件中的符号将不会被导出,因此nm命令无法找到任何符号。

需要注意的是,nm命令只能查看库文件中的符号列表,无法提供关于库文件的详细信息。如果需要了解更多关于libc.so库文件的信息,可以查阅相关的文档或官方资料。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云数据库 MySQL 版(CMYSQL):https://cloud.tencent.com/product/cmysql
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(Tencent Blockchain):https://cloud.tencent.com/product/tencentblockchain
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么网站排名高,而没有任何流量呢?

可是当我们最终将网站关键词排名做到相关性的位置时,却发现目标站点没有任何流量,这导致你花费大量的SEO资源没有得到有效的回报。 23.jpg 那么,为什么网站排名高,而没有任何流量呢?...根据以往提高网站排名的经验,我们将通过如下内容阐述: 1、页面点击 当我们在思考网站有排名,而没有任何流量的时候,我们一定会谈论到网页点击率的问题,没有点击,肯定不会有任何的页面流量。...同时,如果你的Description标签,没有自主定义的话,在移动端如果你获得较高的排名,用户很难在搜索结果中,获得较高价值的信息。 对方可能并没有存在点击冲动。...②标题内容 如果你的排名不错,而页面没有什么点击,很可能是你的标题内容,相对比较过时,并不具有一定的吸引力,比如:现在是2019年,你的标题中存在2018年的解决方案,这个并不友好。...总结:为什么网站排名过高,而自己站点还没有任何流量,上述内容,只是从一些常见的角度去讲述,而实战仍然有诸多细节需要讨论,上述内容,仅供参考!

46230
  • 关于glibc与GLIBC_XX

    pixiv:67650124 glibc位置 这个不同系统不一致,linux中比较多的存在于/lib/libc.so.6 想要查找libc的位置可以通过ldd(linux)/otool(mac)查看依赖于libc.so...我们先讲解这些版本的来源,之后就会明白原因了 那么为什么会有两个版本呢?两个版本又是怎么来的呢?...让我们用nm查看一下其中的符号 000000000000039c r __abi_tag 0000000000004038 B __bss_start 0000000000004038 b completed...看到这里你应该已经明白了,自己的库中GLIBC版本是来源于所使用的符号所标明的版本,因此我们在当前环境编出来的库的依赖版本实际上是当前环境的库中对应符号所依赖的版本号 libc.so与libc.so.6...libc.so虽然长得像so,但它并不是,甚至不是一个软链接。

    2.8K10

    linux常用命令--开发调试篇

    查看函数或者全局变量是否存在于elf文件中--nm nm命令用于查看elf文件的符号信息。文件编译出来之后,我们可能不知道新增加的函数或者全局变量是否已经成功编译进去。...这时候,我们可以使用nm命令来查看。...例如,查看前面所提到的elf文件有没有test函数,可以用命令: nm cmdTest|grep test 000000000040052d T test #打印结果 按照地址顺序列出符号信息: nm...但是要特别注意的是,“瘦身”之后的elf文件由于没有符号信息,许多调试命令将无法正常使用,出现core dump时,问题也较难定位,因此只建议在正式发布时对其进行“瘦身”。...定位crash问题--addr2line 有时候程序崩溃了但不幸没有生成core文件,是不是就完全没有办法了呢?还是cmdTest的例子。

    1.5K30

    OpenHarmony应用集成和固件集成中C库差异化分析

    在使用过程中我们会发现,有时候编译工程,在工程链接三方库的阶段出现找不到符号导致编译失败的问题。...std::n1::basic_string>, std::__n1::allocator >)分析动态库由上面现象中提示链接时没有找到对应函数符号...,我们分析一下动态库的符号表,查看是否存在该符号通过查看动态库的符号表,我们可以发现存在该函数符号,但是参数中的变量命名空间有所区别,IDE中是std::n1,而固件集成方式编译出来的动态库是std::...h,从这里看出可能是基础库libc++.so或libc.so有所差异分析基础库差异我们对比一下IDE的SDK和OpenHarmony的sdk中的基础库(libc++.so/libc.so)首先对比libc...++.so的符号表(左:IDE中的libc++,右:OpenHarmony中的libc++)从上图可以看出函数的命名空间被隔离开了,并且部分函数不一致,是新增的对比libc.so符号表(左:IDE中的

    10120

    c和fortran混编

    比如用nm查看main.o和foo.o [zhxia@ess ~]$ nm main.o U FOO 00000000 T main U表示在main.o中符号foo是未定义的,需要从外部链接进来...@ess ~]$ nm foo.o 00000000 T FOO U printf 可以看出,main.o里需要用到符号名为foo_但foo.o里提供的是FOO——不匹配。...至于代参数的函数我没有涉及到,但我想都得从这个 基本出发吧。还有些程序会使用动态链接库.so,那么应该使用nm的-D选项查看这些动态符号。...这是编译器(f77)的一个命名规则,没有为什么,它就是把你在fortran中的函数名字全转换成小写,然后在最后加一个下划线。我昨天搜了很多版本,头昏脑胀,怎么调都说找不到,也没有想到要自己看看。...任何东西,只需要在编译时告诉编译器你用了哪个动态链接库就可以了,如下: gcc -o out main.c libf1.so 这时候编译器有可能会报告如下错误: libf1.so: undefined

    1.6K41

    一个奇怪的链接问题

    分析 虽然最后终于成功编译运行,但是不免产生了几个疑问: 两段代码同样都调用了exp函数,为什么一个需要链接,一个不需要链接呢? 到底什么时候需要链接呢? 为什么链接的时候放在前面就不行呢?...mov eax, 0 leave ret 汇编的具体细节我们无需尽知,但是我们可以很明显地看到,第二段代码调用了exp函数(call exp指令),而第一段代码没有看到调用...事实上,C编译器总是主动传送libc.a或libc.so给链接器,也就是说,对于使用包含在libc.a或libc.so库中的函数,是不需要在编译时手动链接的。...3.为什么链接的时候放在前面就不行呢?...这个就涉及到链接器的工作原理了,在此只简单说明一下:链接过程中,需要进行符号解析,并且是按照顺序解析;如果库链接在前,就可能出现库中的符号不会被需要,链接器不会把它加到未解析的符号集合中,那么后面引用这个符号的目标文件就不能解析该引用

    1.6K20

    动态链接

    从本质上讲,普通可执行程序和动态链接库中都包含指令和数据,这一点没有区别。...在 Linux中,常用的C语言库的运行库glib,它的动态链接形式的版本保存在“/lib”目录下,文件名叫做“ libc.so”。...整个系统只保留一份C语言库的动态链接文件“libc.so”,而所有的C语言编写的、动态链接的程序都可以在运行时使用它。...当程序被装载的时候,系统的动态链接器会将程序所需要的所有动态链接库(最基本的就是libc.so)装载到进程的地址空间,并且将程序中所有未决议的符号绑定到相应的动态链接库中,并进行重定位工作。...当然,这仅仅是一个推断,至于为什么要这样做,为什么不将每个共享对象在进程中的地址固定,或者在真正的系统中是怎么运作的,我们将在下一节进行解释。

    1.3K20

    苹果被疑虚假宣传,号称4nm的A16处理器实际是5nm工艺?

    一些网友还声称,台积电第一代的3nm 工艺也可能只不过是 5nm 制程的优化版,而N3E技术实际上才是真正的3nm制程。...值得注意的是,在去年8月,TechInsights发布的一份报告称,现在的半导体市场确实存在这种“谎报”制程工艺的行为,两家领先的代工厂都放任客户声称他们采用了4nm(N4)制程工艺,而实际使用的却仍是...TechInsights在报告中指出,联发科天玑9000虽然宣称是基于台积电N4制程,但是TechInsights发现其关键工艺尺寸与台积电早期的N5制程产品完全相同。...TechInsights在分析了骁龙芯片后,发现三星4LPX工艺在物理上与其5LPE工艺并没有什么不同。 为什么代工厂和其客户一起虚报其晶体管进展情况?...但是在晶体管密度没有任何提高的情况下,名称应采用5LPX,以表明该工艺仍然属于5nm节点的范畴。但是大多数人用5nm或4nm的简写来代替完整的工艺名称,所以数字还是很重要的。 编辑:芯智讯-浪客剑

    18210

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

    注意:我们代码里明明用的是printf,为什么它却引用了puts的符号呢,因为编译器默认情况下会把只用一个字符串参数的printf替换成puts, 可以节省格式解析的时间,使用-fno-builtin会关闭这个内置函数优化选项...参数可以指定程序入口,由于一段简短的printf函数其实都依赖了好多个链接库,我们也不太方便使用链接脚本将目标文件与所有这些依赖库进行链接,所以使用下面这段内嵌汇编的程序来打印一段字符串,这段程序不依赖任何链接库就可以打印出字符串内容...文件格式: readelf -h 列出文件头 readelf -S 列出每个段 readelf -r 列出重定位表 readelf -d 列出动态段 关于查看目标文件符号信息: nm -a 显示所有的符号...nm -D 显示动态符号 nm -u 仅显示没有定义的外部符号 nm -defined-only 仅显示定义的符号 关于符号的说明: 如果符号类型是小写的,表明符号是局部符号,大写表示符号是全局符号...:该符号类型没有定义 参考资料 https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/ 《程序员的自我修养》

    1.2K30

    万万没想到,一个可执行文件原来包含了这么多信息!

    新增了一个全局变量或者函数,但是编译完之后,不确定有没有? $ nm main |grep testFun 0000000000400526 T testFun nm看下就知道了。...nm主要用于查看elf文件的符号表信息。...有符号表吗 我们都知道,没有符号表的程序,在core之后是没有太多有效信息可看的,也是无法使用gdb正常调试的,这个在《GDB调试入门,看这篇就够了》中已经有提到了,那么怎么看有没有符号表呢?...$ strip main 这个时候再看看: $ nm main no main symbols 程序占用空间太大? 为什么程序的占用空间这么大?...test函数符号前带头,后带尾,这也是C++中有重载和C中没有重载的原因之一。

    67920

    linux动态库和静态库

    : 有时候可能需要查看一个库中到底有哪些函数,nm工具可以打印出库中的涉及到的所有符号,这里的库既可以是静态的也可以是动态的。...nm列出的符号有很多, 常见的有三种:: T类:是在库中定义的函数,用T表示,这是最常见的; U类:是在库中被调用,但并没有在库中定义(表明需要其他库支持),用U表示; W类:是所谓的“弱态”符号...例如,假设开发者希望知道上文提到的hello库中是否引用了 printf(): nm libhello.so | grep printf 发现printf是U类符号,说明printf被引用...,但是并没有在库中定义。...到这里,为什么会有库的依赖问题已经得到解答:  因为libchild.a依赖于libbase.a,但是libbase.a在libchild.a的左边,导致libbase.a中的目标文件(*.o)根本就没有被加载到

    12.4K20

    NeuroImage:磁共振3D梯度回波磁化转移序列同时对铁和神经黑色素进行成像

    两组在性别和年龄上没有显著差异。对于本文讨论的任何成像方法,PD组的同侧和对侧之间或HC组的左侧和右侧之间没有显著差异。...男性和女性之间在任何一项测量结果上都没有显著差异(p>0.050)。 值表示平均值±标准差[范围]。UPDRS-III是在受试者处于服药状态时服用的。 采用独立t检验进行显著性差异检验。...在临床规模方面,与任何其他定量MRI指标没有其他显著的相关性。 4. 讨论和结论 据我们所知,结合NM、铁、铁-NM重叠和来自单个序列的N1信号来区分早期PD和健康对照还没有文献报道。...另一方面,虽然其他研究表明UPDRS-III评分与NM信号面积或NM体积之间的相关性较弱或中等,但另一篇论文显示NM含量与上述任何临床评分都没有相关性。...然而,在一般研究中,报告了不一致的结果,一些人报告QSM值与UPDRS-III没有相关性。

    82600

    深入浅出GCC编译器

    可以输入 readelf 查看说明及选项参数 readelf -h 显示可执行文件或目标文件的ELF Header的文件头信息(就是ELF文件开始的前52个字节) ③ nm: 查看目标文件中出现的符号...上面可以看到,nm列出的信息总共有三列:第一列是指程序运行时的符号所对应的地址,对于函数来说表示的是函数的开始地址,对于变量则表示的是变量的存储地址;第二列是指相应符号是放在内存的哪一个段;第三列则是指符号的名称...这个命令通常会和 addr2line (后面会介绍)一块使用,因为nm列出了符号的地址,但是并没有行号和源文件名称,而 addr2line 可以根据符号地址给出行号和源文件目录及名称。...举个例子,我们写一个int类型的main函数,并且不加return语句 我们直接编译程序,可以看到,编译通过,没人任何报错也没有任何警告,并且程序可以运行并打印出值。...我们对下面程序编译,程序中有一个int到char的隐式类型转换 编译一下,虽然没有警告,但是程序没有打印任何东西。

    27510

    webview接入HttpDNS实践

    getaddrinfo是在libc.so中的定义的,其它库如libandroid_runtime.so、libjavacore.so要使用这个函数的话,只能通过动态导入符号的形式,好在java网络库底层是就是通过这个方式实现的...2.查找需要hook的函数的符号,得到它在符号表中的索引。 3.遍历plt表,直到匹配第2步中找到的符号索引。 如果是JUMP_SLOT类型(函数调用),替换为新的符号地址(函数指针)。...通过分析得知,虽然getaddrinfo是libc.so的导出函数,但是这种方法无法hook导出函数,没有一劳永逸的方法,只能hook导入函数,因为这种方案是通过修改GOT表项实现的,这是它的缺陷。...DNS域名解析函数具体实现是在chromiumn.so,不同版本的实现也不同,5.0版本的代码见host_resolver.h webview的DNS域名解析函数是否也跟java的网络库一样最终调用的libc.so...解决方法是通过一个脚本,pull下测试设备上的所有so到主机上,然后用readelf工具查找so的导入符号,观察是否有getaddrinfo字样的导入符号。 为此我写了一个脚本,方便自动化进行。

    3.7K61

    用5nm假冒4nm?三星、台积电配合客户编造制造工艺的谎言?

    据芯智讯收到的一份据称半导体研究机构TechInsights的报告(我们没有购买TechInsights的会员,因此无法进一步查证)显示,现在的半导体市场就出现了这种“谎报”的行为,两家领先的代工厂都放任客户声称他们采用了...报告称,这个问题最初始于三星。在与台积电下一个节点的长期竞争中,三星在交付5纳米芯片的一年后,宣布将于2021年底交付生产4纳米芯片。...但是在晶体管密度没有任何提高的情况下,名称应采用5LPX,以表明该工艺仍然属于5nm节点的范畴。大多数人用5nm或4nm的简写来代替完整的工艺名称,所以数字还是很重要的。...如果可以重新命名一个较旧的工艺,为什么消费者要为4纳米技术承担额外的成本呢? 一段时间以来,代工厂没有在节点数量和晶体管密度之间保持严格的相关性。...之后的事实也证明,当时三星14nm工艺的性能甚至不如台积电的16nm工艺,这也是为什么苹果在A9之后又全面转向了由台积电独家代工。

    35110
    领券