首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在clang中,x86_64-pc-windows-msvc和x86_64-pc-windows-gnu目标的区别是什么?

在clang中,x86_64-pc-windows-msvc和x86_64-pc-windows-gnu目标的区别是什么?
EN

Stack Overflow用户
提问于 2022-07-31 15:47:25
回答 1查看 439关注 0票数 1

我知道其中一个使用libstdc++,另一个使用msvc标准库,但是当我在不链接的情况下编译以下内容时,它有什么区别呢?

代码语言:javascript
运行
复制
int add(int a, int b) {return a + b;}

产生的目标代码有什么不同吗?还是相同的?其他目标之间有什么区别?

命令为clang -c test.c -target x86_64-pc-windows-msvc/gnu。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-07-31 16:46:19

在clang中x86_64-pc-windows-msvc和x86_64-pc-windows-gnu目标的区别是什么?

这两种构建用于不同的C语言实现,在此上下文中,这意味着标准库、标头和库搜索路径以及工具(特别是链接器)。前者为Microsoft (++)构建,后者用于GNU (我相信是由MinGW和兼容工具链提供的)。

所产生的目标代码有什么不同吗?还是相同的?

您可能一开始就没有为其中一个或两个目标获取任何对象代码。每个组件都需要在系统上安装相应的开发组件,这些组件不是由Clang提供的,

如果这两个目标实际上都是可行的,那么Clang将不仅使用所选目标的标准库的函数,而且还使用它的标头。根据程序的不同,这可能会产生以次要方式不同的对象代码。

和其他目标之间的区别是什么

据我所知,Windows上的GNU C使用相同的ABI (函数调用约定、数据类型定义、布局规则、.)因此,作为MSVC,这两个目标在这些领域不应该有任何区别。对于大多数其他目标来说,情况并非如此。如果您选择了32位目标或Linux目标(例如),那么您可以期望得到更大的差异,并且结果可能无法在构建机器上工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73184707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档