关闭

Liunx下解决动态链接库符号未定义问题

874人阅读 评论(0) 收藏 举报
分类:

Liunx下解决动态链接库符号未定义问题

标签(空格分隔): 技术


nm

作用

列出二进制程序中的负号的值,符号类型和符号名称等

用法

  • -A 显示对象文件名称
  • -C 显示程序中的原始名称
  • -D 打印动态负号
  • -u 打印那些未定义的符号

符号类型

符号类型 涵义
A 该符号的值在以后的链接中不再改变
B 未初始化的全局变量
D 初始化的全局变量
T 表示全局非静态函数
U 未定义符号

ldd

作用

查看elf文件一脸的 so 动态链接库

参考

ldd命令浅析

gcc

用法

–undefined symbols = method

ignore-all

Do not report any unresolved symbols. 

report-all

Report all unresolved symbols. This is the default. 

ignore-in-object-files

Report unresolved symbols that are contained in shared libraries, but ignore them if they come from regular object files. 

ignore-in-shared-libs

Report unresolved symbols that come from regular object files, but ignore them if they come from shared libraries. This can be useful when creating a dynamic binary and it is known that all the shared libraries that it should be referencing are included on the linker's command line.

-z

Report unresolved symbol references from regular object files. This is done even if the linker is creating a non-symbolic shared library. The switch --[no-]allow-shlib-undefined controls the behaviour for reporting unresolved references found in shared libraries being linked in.

–allow-shlib-undefined/–no-allow-shlib-undefined

Allows or disallows undefined symbols in shared libraries. This switch is similar to --no-undefined except that it determines the behaviour when the undefined symbols are in a shared library rather than a regular object file. It does not affect how undefined symbols in regular object files are handled.

The default behaviour is to report errors for any undefined symbols referenced in shared libraries if the linker is being used to create an executable, but to allow them if the linker is being used to create a shared library.

The reasons for allowing undefined symbol references in shared libraries specified at link time are that:

A shared library specified at link time may not be the same as the one that is available at load time, so the symbol might actually be resolvable at load time.

There are some operating systems, eg BeOS and HPPA, where undefined symbols in shared libraries are normal.

The BeOS kernel for example patches shared libraries at load time to select whichever function is most appropriate for the current architecture. This is used, for example, to dynamically select an appropriate memset function.
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

如何解决C程序中不同静态库之间的符号冲突问题

之前在将helix player移植到ios平台时遇到过这个问题,现在整理一下,给自己做个总结,也希望能对别人有所帮助。 问题的描述:  如果helix在ffmpeg之前是一个小有名气的开源的播放...
  • hp_truth
  • hp_truth
  • 2015-04-14 16:23
  • 2088

Bug:编译链接,发现找不到符号,用nm工具查看,发现符号属性有两个分别是U和T

Bug:编译链接,发现找不到符号,用nm工具查看,发现符号属性有两个分别是U和T。 U代表是未定义符号,而T表示的是符号定义在Text段 nm -l 库名 | grep -rns "符号名" | ...
  • chinaclock
  • chinaclock
  • 2015-09-17 10:17
  • 3750

静态库的符号解析和重定义处理策略

一、什么是静态库 将多个普通目标文件打包成为一个单独的文件,称为静态库。 静态库是为了解决以下问题而出现的: (1)C用户需要使用大量的C函数库 把所有的代码放在一个.c文件中,然后产品代码一...
  • mishifangxiangdefeng
  • mishifangxiangdefeng
  • 2015-04-19 12:23
  • 1848

Linux动态链接库同名符号装载问题(二)

这篇文章很好的分析了Linux动态链接库的机制:http://www.ibm.com/developerworks/cn/linux/l-dynamic-libraries/index.html
  • littlefang
  • littlefang
  • 2014-07-18 15:57
  • 2956

extern "c" 动态链接库符号表导出问题 以及函数参数压栈顺序

c语言编译的动态链接库中,导出的符号名字就是 源代码中的相应的名字; 例如函数 void test(){} 导出的符号名字 就是 test 但是对于c++ 来讲不是这样, c++ 有类, ...
  • liyong748
  • liyong748
  • 2012-05-09 21:48
  • 2981

Linux动态链接库同名符号装载问题

找到了当时发生同名符号冲突的原因。当程序A调用.so模块B时,为了让被调用的B模块能够使用A模块中的一些函数,在编译A程序时使用了--export-dynamic选项。 如果在创建动态链接的可执...
  • wdt3385
  • wdt3385
  • 2012-09-03 16:02
  • 613

liunx动态链接库例子源代码

  • 2011-11-28 15:35
  • 3KB
  • 下载

QT调用MFC生成的动态链接库,功能为解决QT中打开文件QFileDialog时某些机器闪退的问题

  • 2017-08-07 16:28
  • 8.87MB
  • 下载

如何读取动态链接库中的符号表,并调用

我们知道动态加载的函数库是一类函数库,他可以在程序运行过程中的任何时间加载。它们特别适合在函数中加载一些模块和plugin扩展模块的场合,因 为它可以在当程序需要某个plugin模块时才动态的加载。例...
  • u012218650
  • u012218650
  • 2013-10-08 14:49
  • 2481

linux 下 动态链接库 so 之间的符号冲突

在 linux 下编写动态链接库程序,需要注意 dll 之间的符号冲突。 当我们链接库需要提供给很多方集成使用,需要面对复杂的集成环境,其中一个大问题就是与第三方集成环境的符号冲突。 这些冲突有些不是...
  • luansxx
  • luansxx
  • 2013-12-04 19:37
  • 3682
    个人资料
    • 访问:25192次
    • 积分:692
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:0篇
    • 译文:0篇
    • 评论:10条
    最新评论