如何检测 GHC 默认生成 32 位还是 64 位代码?

2024-03-11

我的里面有以下内容makefile https://github.com/bsl/GLFW-b/blob/master/Makefile:

GLFW_FLAG := -m32 -O2 -Iglfw/include -Iglfw/lib -Iglfw/lib/cocoa $(CFLAGS)
...
$(BUILD_DIR)/%.o : %.c
    $(CC) -c $(GLFW_FLAG) $< -o $@
$(BUILD_DIR)/%.o : %.m
    $(CC) -c $(GLFW_FLAG) $< -o $@

The -m32指示 GCC 生成 32 位代码。它之所以存在,是因为在某些配置上 GHC 设置为构建 32 位代码,但 GCC 的默认值有时是 64 位。我想概括这一点,以便它自动检测 GHC 正在构建 32 位还是 64 位代码,然后将正确的标志传递给 GCC。

Question:我如何询问 GHC 将构建什么类型的代码(32 位与 64 位)?

PS:我的 cabal 文件在构建期间调用此 makefile 以解决 cabal 中的限制。我确实希望我能在我的 cabal 文件中将这些列为 c 源代码。


我看到的常见技巧是询问一个字节或位的大小Int or Word,因为这在 GHC 中根据机器的字大小而变化,

Prelude> :m + Foreign
Prelude Foreign> sizeOf (undefined :: Int)
8
Prelude Foreign> bitSize (undefined :: Int)
64

或者使用系统工具:

$ cat A.hs
main = print ()

$ ghc --make A.hs
[1 of 1] Compiling Main             ( A.hs, A.o )
Linking A ...

$ file A
A: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), 
     dynamically linked (uses shared libs), for GNU/Linux 2.6.27, not stripped
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测 GHC 默认生成 32 位还是 64 位代码? 的相关文章

随机推荐

  • CSS 不适用于 xhtml2pdf Django

    我正在尝试改进由以下人员创建的生成的 PDFxhtml2pdf和一些CSS style in my Django Project 我想例如justify a text block 但显然 它不起作用 我不知道为什么 我正在阅读大量有关该库的
  • 使用 POST 创建 HTML 表格

    我正在尝试创建一个网页 该网页接受用户输入 将其发布到创建页面 然后创建另一个在 html 表中显示数据的网页 我正在使用 file put contents 创建网页 每当我尝试包含一个循环来获取要输出的 3 个 td 的内容时 我都会收
  • “e 是 65537 (0x10001)”是什么意思?

    我想知道输出是什么e is 65537 0x10001 方法 它发生在 RSA 密钥生成过程中 使用openssl genrsa 我知道这些点意味着该数字已经通过了探针除法 并且在通过米勒 拉宾测试后打印出了加号 但我无法弄清楚 RSA 密
  • 循环和数组格式

    我刚刚完成了我必须为课堂编写的程序 该程序应该从用户那里获取 ID 和 日期 的输入 我的老师要求我们在这两个部分中放置一个循环 以防用户没有输入正确的 ID 日期 我已经将程序编写到可以接受输入的位置 但它无法区分输入是否有效 并将继续执
  • 如何读取等待 dropzone 的文件列表并按顺序上传

    我正在使用 拖放 上传多个图像dropzone js 在这里我保留了autoProcessQueue to false进行自定义上传 现在我正在寻找如何获取我选择上传的队列列表 原因是我需要一个接一个地上传文件 以便保持顺序 我可以保留选择
  • git 添加 .给我总线错误(核心转储)

    我正在使用 ubuntu 并尝试将我的代码放在 github 上 但是当我尝试使用 git add 时 命令时 我收到错误 总线错误 核心转储 joannah joannah Inspiron N5040 Macerdo git init
  • 图 Api - 401 未经授权

    刚刚开始使用 graph office API 哇 这是一个雷区 只是想知道是否有人可以给我任何建议 当我尝试联系时收到 401https graph microsoft com beta me files https graph micr
  • 如何将资产文件夹中的文件路径传递给文件(字符串路径)? [复制]

    这个问题在这里已经有答案了 可能的重复 Android 如何确定资产中特定文件的绝对路径 https stackoverflow com questions 4744169 android how to determine the abso
  • 角度引导模态掩码形式

    我正在尝试在范围内获得角度形式来验证验证等 基本情况 假设我有以下 HTML
  • 如何控制C printf %e中'e'后面的指数位数?

    我想控制C中 e 后面的指数位数printf e 例如 Cprintf e result 2 35e 03 但我想要2 35e 003 我需要3位指数 我该如何使用printf Code include
  • ASP.NET:如何更快地加载页面

    我们用 ASP NET 编写了 Portal 但它有很多 JavaScript 我们的页面加载速度很慢 在某些页面中 页面大小为 1 5 mb 减少或压缩页面大小以使其更快的最佳方法是什么 谢谢 几件事 最小化您的 javascript 和
  • Azure Functions V2 中的 OpenAPI(又名 Swagger)

    我正在创建一个 V2 函数应用程序 并希望使用 Swagger Open API 来处理文档 但 Azure V2 函数门户尚不支持它 关于如何在 VSTS 中使用 Swagger 和 V2 函数在每个构建上创建文档 有什么建议吗 TL D
  • 展平嵌套数组。 (爪哇)

    我正在努力创建正确的逻辑来展平数组 我本质上想为嵌套数组中的每个子项复制父行 嵌套数组的数量可能会有所不同 我一直在创建 Java 列表 因为我发现它们很容易使用 但对任何解决方案都开放 这个问题的本质是我从一些嵌套的 JSON 开始 我想
  • 在不知道结构的情况下使用python读取二进制文件

    我有一个包含 8000 个粒子位置的二进制文件 我知道每个粒子值应该看起来像 24 6151 我不知道我的程序给出的值的精度 我猜它是双精度 但是当我尝试使用以下代码读取文件时 In with open results0epsilon en
  • Symfony2 简单文件上传编辑,无实体

    请帮助我 因为我不敢相信自己的眼睛 我拒绝使用某些第三方插件进行文件上传 并拒绝为文件 文档创建单独的实体 我只想在 Zend Laravel 等中进行简单的文件上传 我有一个发票表 最后一列名称为 附件 我想在此处存储其清理后的名称 例如
  • 误报选项不会出现在项目中

    我在 Ubuntu 12 01 机器上使用 Sonarqube 我使用 Sonar Runner 和 Jenkins 插件来分析我的代码 当我对新项目进行分析时 问题就出现了 例如 我已经保存了 Sonar A 和 B 项目 如果我对该项目
  • 理解 Dymola 错误消息时遇到问题

    谁能告诉我 代数环 的含义 以及我应该如何通过添加 预 运算符来应对这种情况 我真的没看懂 Error Failed to generate code for an algebraic loop involving when equatio
  • 如何动态计算HTML页面表格中每一列的总计?

    我基本上会有一个表格 其中包含一周中的几天 标题行交叉 第 1 栏 周日 第 2 栏 周一等 每个单元格将输入工作时间 即8 最后一行 我希望每个单元格在将数据输入到每个单元格后动态计算其列中其上方单元格的总数 理想情况下 应在将光标移动到
  • 每个外键都有索引?

    每个外键上的索引是否都会优化查询 通常 在外键上放置索引被认为是良好的做法 这样做是因为在将 FK 表链接到包含键定义的表时 它有助于提高联接性能 这不会神奇地使您的整个查询得到优化 但它肯定有助于提高 FK 与其主键对应部分之间的连接性能
  • 如何检测 GHC 默认生成 32 位还是 64 位代码?

    我的里面有以下内容makefile https github com bsl GLFW b blob master Makefile GLFW FLAG m32 O2 Iglfw include Iglfw lib Iglfw lib co