libtorch 版本 Pre-cxx11 ABI 和 cxx11 ABI 区别
libtorch
的 Pre-CXX11 ABI 和 CXX11 ABI 版本主要区别在于它们使用的 C++ ABI(Application Binary Interface)。ABI 定义了编译后的二进制文件在不同模块之间的接口。C++11 引入了一些新的语言特性,导致 ABI 发生变化,因此有两个版本的 ABI 来保持与现有代码的兼容性。
主要区别:
-
ABI 不兼容性:
- Pre-CXX11 ABI 使用的是 C++11 标准之前的 ABI,主要是为了与使用旧版本 ABI 的库保持兼容。这种 ABI 版本的
libtorch
能与旧的二进制代码一起工作,特别是与一些系统库(例如,使用旧 ABI 编译的libstdc++
库)保持兼容。 - CXX11 ABI 使用的是 C++11 标准引入后的新 ABI。这种版本的
libtorch
是为了利用 C++11 的新特性编译的,能带来性能和功能上的改进,但它与 Pre-CXX11 ABI 不兼容。
- Pre-CXX11 ABI 使用的是 C++11 标准之前的 ABI,主要是为了与使用旧版本 ABI 的库保持兼容。这种 ABI 版本的
-
运行时兼容性:
- 如果你使用的系统或者其他依赖库是基于 Pre-CXX11 ABI 编译的,并且你选择使用 CXX11 ABI 编译的
libtorch
,可能会导致链接错误或运行时问题。 - 反之,如果你使用的是新版本的库,并且需要利用 C++11 或更新标准的特性,最好使用 CXX11 ABI 的
libtorch
。
- 如果你使用的系统或者其他依赖库是基于 Pre-CXX11 ABI 编译的,并且你选择使用 CXX11 ABI 编译的
-
应用场景:
- Pre-CXX11 ABI 通常用于需要兼容旧版库的项目,或者你的系统中有许多基于旧 ABI 编译的库。
- CXX11 ABI 则适合更现代的项目,特别是那些完全基于 C++11 或更新标准的项目。
如何选择:
- 如果你不确定,可以检查你的系统库是否已经过渡到 CXX11 ABI。如果它们仍然依赖 Pre-CXX11 ABI,建议使用 Pre-CXX11 ABI 版本的
libtorch
。 - 使用
libtorch
官方提供的二进制文件时,你可以选择对应的 ABI 版本,通常通过环境变量GLIBCXX_USE_CXX11_ABI
来控制:GLIBCXX_USE_CXX11_ABI=0
:使用 Pre-CXX11 ABI。GLIBCXX_USE_CXX11_ABI=1
:使用 CXX11 ABI。
最好使用 CXX11 ABI, 否则你会遇到很多 链接错误。尤其是和别的库进行混编时候。
分类:
深度学习框架
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-08-30 YOLOv7 源码解读之数据读取
2022-08-30 YOLOv3-YOLOv7 COCO 数据集解析