libtorch 版本 Pre-cxx11 ABI 和 cxx11 ABI 区别

 


libtorch 的 Pre-CXX11 ABI 和 CXX11 ABI 版本主要区别在于它们使用的 C++ ABI(Application Binary Interface)。ABI 定义了编译后的二进制文件在不同模块之间的接口。C++11 引入了一些新的语言特性,导致 ABI 发生变化,因此有两个版本的 ABI 来保持与现有代码的兼容性。

主要区别:

  1. ABI 不兼容性:

    • Pre-CXX11 ABI 使用的是 C++11 标准之前的 ABI,主要是为了与使用旧版本 ABI 的库保持兼容。这种 ABI 版本的 libtorch 能与旧的二进制代码一起工作,特别是与一些系统库(例如,使用旧 ABI 编译的 libstdc++ 库)保持兼容。
    • CXX11 ABI 使用的是 C++11 标准引入后的新 ABI。这种版本的 libtorch 是为了利用 C++11 的新特性编译的,能带来性能和功能上的改进,但它与 Pre-CXX11 ABI 不兼容。
  2. 运行时兼容性:

    • 如果你使用的系统或者其他依赖库是基于 Pre-CXX11 ABI 编译的,并且你选择使用 CXX11 ABI 编译的 libtorch,可能会导致链接错误或运行时问题。
    • 反之,如果你使用的是新版本的库,并且需要利用 C++11 或更新标准的特性,最好使用 CXX11 ABI 的 libtorch
  3. 应用场景:

    • 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, 否则你会遇到很多 链接错误。尤其是和别的库进行混编时候。

posted @   Zenith_Hugh  阅读(651)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-08-30 YOLOv7 源码解读之数据读取
2022-08-30 YOLOv3-YOLOv7 COCO 数据集解析
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

微信打赏