`
mypyg
  • 浏览: 549666 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

链接程序时遇到的动态库符号无法找到的问题

GCC 
阅读更多
在链接程序时,提示某个动态库中的标号无法找到,但查看标号所在的动态库确实在gcc库搜索路径中,编译命令行中也有了对此动态库的引用。找了半天原因未找到,后来偶尔把LDFLAGS+=的顺序变了一下,程序可以链接通过了,查找原因发现是因为LDFLAGS中的"-Wl,--as-needed"参数引起的,把这个参数去掉后,无论如何改变顺序都可以链接通过了,怀疑是ld在处理标号时,把一些标号丢掉了,这些标号虽然程序没有用到,但是程序调用的动态库用到了,直接就导致了符号无法找到。以后再验证这个猜测。
分享到:
评论

相关推荐

    单片机动态链接库demo_发布版v1版

    动态链接库的基本原理是将某些函数和数据分离到单独的模块中,程序运行时按需加载这些模块。这样可以避免在启动时占用过多内存,同时允许程序在运行过程中更新或扩展功能,而无需重新编译整个程序。 在单片机中,...

    动态链接库测试程序!

    在Windows操作系统中,动态链接库(Dynamic Link Library, DLL)是一种重要的编程技术,它允许多个应用程序共享代码和数据,从而节省内存并简化软件维护。本示例程序“动态链接库测试程序!”旨在演示如何在Win32...

    linux qt 动态链接库

    6. **调试动态链接问题**:使用`strace`工具可以跟踪系统调用,帮助找出程序在尝试加载动态库时的问题。 7. **静态链接与动态链接的权衡**:虽然静态链接可以避免上述的一些问题,但会增加程序大小且不利于库的更新...

    qt eclipse 动态链接库

    2. **库的查找**:在运行时,系统需要找到动态链接库。Windows上,可以将`.dll`文件放在可执行文件同一目录下或系统路径中的某个位置;Linux上,库通常放在`/usr/lib`或`/usr/local/lib`,并且需要更新`ldconfig`...

    jsoncpp 文档 动态链接库

    在编译时,确保链接器能够找到这些库文件,否则程序在运行时会报找不到符号的错误。 3. **头文件**:JSONCPP 提供了头文件,如 `json/json.h`,你需要在源代码中包含这些头文件,以使用其提供的类和函数。 4. **...

    dll和LIb即动态库和静态库的转换程序源代码

    本程序源代码提供了将DLL动态库转换为LIB静态库的功能,这对于使用VC++(Visual C++)进行编程的开发者来说尤其实用。 DLL是一种可执行文件格式,它包含可供其他程序调用的函数和数据。DLL文件的优势在于它可以在多...

    AIX系统中动态链接库的创建与使用

    开发者可以通过这些工具查看库的依赖关系,检查符号表,以及定位和解决链接问题。 总之,AIX系统中的动态链接库是系统程序开发的重要组成部分,它简化了代码复用,优化了资源管理,并且为应用程序提供了灵活的扩展...

    VC源程序链接问题-正则匹配

    对于动态库,可能还需要设置运行时库的路径。 2. **未定义的引用**:这个错误意味着在链接阶段,链接器无法找到源代码中调用的某个符号(函数或变量)的定义。检查代码是否正确包含了实现该符号的源文件,或者确认...

    对比Windows和Linux两系统的动态库

    移植动态库时,需要全面了解两个系统的特性,灵活运用各种工具和技术,以确保程序在目标平台上正确运行。对于大型应用程序,这种移植工作可能会相当复杂,但通过深入理解和实践,可以积累宝贵的经验,提高跨平台开发...

    理解linux下动态链接库延迟绑定.rar_lib_linux

    2. 当程序遇到对动态库函数的调用时,该调用不会直接跳转到库函数的地址,而是跳转到一个特殊的陷阱指令(trampoline)。 3. 这个陷阱指令触发动态链接器解析未绑定的符号,并查找对应的库函数地址。 4. 动态链接器...

    VC++动态链接库

    1. **非MFC动态库**:不依赖于MFC类库,适用于所有类型的程序,无论是基于MFC的还是非MFC的。 2. **MFC规则DLL**:虽然使用了MFC,但没有自己的消息循环,适用于那些仅提供函数库功能而不包含复杂UI的DLL。 3. **MFC...

    WS2_32.LIB 和WS2_32.DLL

    如果在编译过程中遇到“无法解析的外部符号”错误,通常是因为缺少了对WS2_32.DLL的引用,这时需要确保在项目设置中正确链接到该库。 WS2_32.LIB则是静态链接库,它是编译期间使用的,将WS2_32.DLL中定义的函数链接...

    [转]在Linux中创建静态库.a和动态库.so

    2. 动态库(.so文件):动态库在运行时被加载到内存中,多个程序可以共享同一份库,节省了磁盘空间和内存。但需要确保系统中存在对应的库文件,否则程序无法运行。 创建静态库的步骤如下: 1. 编写源代码:首先,...

    ELF动态解析符号过程.rar_elf_hash_动态解析_符号

    动态解析过程中,当遇到未解析的外部符号时,系统会使用elf_hash计算符号的哈希值,然后在动态链接器的哈希表中搜索匹配项。如果找到匹配,就会调用相应的函数或访问变量;如果没有找到,会继续使用其他方法(如...

    Qt构建动态库静态库.rar

    - 动态库在运行时被加载到内存,多个程序可以共享同一份库,节省系统资源。 - 需要对应的动态链接库文件(如.dll on Windows,.so on Linux)在运行环境存在。 - 更新动态库不影响依赖它的程序,便于升级和维护。...

    win764位系统下VC++2010中设置FFTW时遇到的若干问题及解决办法

    当尝试编译包含FFTW函数调用的代码时,可能会遇到链接器错误LNK2019,该错误通常表示找不到对某个符号的引用。例如: ``` error LNK2019: unresolved external symbol _fftw_plan_dft_1d@16 referenced in function...

    如何解决 error LNK2019 无法解析的外部符号,该符号在函数 中被引用

    若设置为“在动态库中使用MFC”,则需要确保系统中安装了MFC的动态库,并且在运行时可以找到。 4. **编译配置不一致**:`项目 - 配置属性-CC++-代码生成-运行库` 设置决定了程序使用的C++运行时库。例如,如果选择...

    链接器(Linker编译器工具链符号解析、地址重定位和符号链接

    - **动态链接器**:与静态链接器不同,动态链接器不会将所有代码和数据都合并到一个文件中,而是保留独立的共享库文件,并在程序运行时动态加载这些库。这种方法的优点是可以显著减少可执行文件的大小,并允许多个...

    动态库查看器depends2.2版本x64x86-i64

    这个版本的动态库查看器可以帮助开发者理解和解决64位应用程序在处理DLL依赖时可能遇到的问题。 动态库查看器的核心功能包括: 1. **依赖树视图**:显示应用程序及其所有依赖的DLLs的层次结构,帮助开发者理解程序...

Global site tag (gtag.js) - Google Analytics