Rust GNU和MSVC生锈工具链之间有什么区别?

Rust GNU和MSVC生锈工具链之间有什么区别?,rust,Rust,文件规定: 您需要哪个版本的Rust在很大程度上取决于您希望与哪些C/C++库进行互操作:对于与Visual Studio生成的软件的互操作,请使用Rust的MSVC构建;要与使用MinGW/MSYS2工具链构建的GNU软件进行互操作,请使用GNU构建 这些区别到底是什么 这仅仅是关于与MSVC编译的二进制文件的互操作性吗 它会影响链接还是Rust或LLVM提供了自己的链接器 我知道Rust使用LLVM作为后端,在两者之间进行选择会影响代码生成吗 对 它使用指定工具链的链接器。Rust不提供自己

文件规定:

您需要哪个版本的Rust在很大程度上取决于您希望与哪些C/C++库进行互操作:对于与Visual Studio生成的软件的互操作,请使用Rust的MSVC构建;要与使用MinGW/MSYS2工具链构建的GNU软件进行互操作,请使用GNU构建

这些区别到底是什么

  • 这仅仅是关于与MSVC编译的二进制文件的互操作性吗

  • 它会影响链接还是Rust或LLVM提供了自己的链接器

  • 我知道Rust使用LLVM作为后端,在两者之间进行选择会影响代码生成吗

  • 它使用指定工具链的链接器。Rust不提供自己的链接器
  • 是的,但仅限于ABI兼容性。它不会影响优化,除非可能是间接的,因为使用了不同的展开机制(GNU使用libunwind,MSVC使用SEH)

  • 这两种放松机制中有哪一种优于我们,或者它们有不同的取舍?谢谢你的快速回复@hl3mukkel你能找到这两种ABI的区别吗?如果我交叉编译Windows程序,我应该针对哪个目标进行编译?