当我们链接同一库的不同版本时会发生什么?
What happens when ld link different versions of the same library
假设有libA。因此,在1.1和1.2版本中,它们都定义了相同的符号。
如果myApp需要libA中的一个符号,但错误地链接了两个版本,会发生什么:
ld -o myApp -Lpath -lA_1_1 -lA_1_2
我是对的,它会使用第一个符号,只要它能找到它?
我是对的,它会使用第一个符号,只要它能找到它?
一般来说是的。这可能不是你想要的。
如果libA_1_2
中的函数foo()
调用库中的另一个公共函数bar()
,那么它将使用libA_1_1
中的符号,这可能会做错误的事情(例如,如果库的v1.2更改为foo()
期望bar()
释放一些内存,但v1.1版本的bar()
不这样做)。
相关文章:
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我的设备上的 C++ 编译器版本是什么
- CMake 的导出如何知道目标版本是什么?
- 什么是 tensorrt.volume 的 c++ 版本?
- 使用共享库版本支持不同 ABI 的最佳实践是什么?
- 什么是非时态流式处理负载内部 (_mm256_stream_load_si256) 的浮点 (__m256d) 版本?
- 安卓中使用的默认C++版本是什么
- 如果您用新版本覆盖共享库(当前由程序映射)会发生什么
- 开发C++应用程序,目标服务器有不同的std lib版本,最佳实践是什么
- Java循环屏障C++版本是什么?
- 如果 std::addressof 是 &.什么是 *& 的可读版本?
- 这两个版本的代码有什么区别
- 代码中定义c++版本的内容是什么
- 在版本 440 核心中绘制具有纹理的立方体的顶点和片段着色器应该是什么
- "find"的递归版本和非递归版本有什么区别?
- 提升的返回类型是什么::apply_visitor(延迟版本)
- 什么是"blocks[i][j].isColorBox() ? pieceColor : backgroundColor"的长版本?
- AttachConsole的实际最低版本要求是什么
- C++-什么是指针数组版本的temp.pushback(temp[i])
- 你如何找到你的 linux 机器上安装了什么版本的 libstdc++ 库