【问题标题】:ld linker doesn't compile win64 object fileld 链接器不编译 win64 目标文件
【发布时间】:2015-11-03 23:28:42
【问题描述】:

每当我尝试在 NASM 中创建程序时,我都有两个可用的选项:创建一个 win32 可执行文件(在我的 x64 机器上不起作用)或创建一个 win64 对象/输出文件。我使用 NASM 创建了一个 win64 目标文件,然后尝试将其与以下命令链接:

nasm -f win64 -o output.o input.asm

ld input.o -o output.exe

来自 MINGW ld 的错误信息是:

Example.o: file not recognized: File format not recognized

【问题讨论】:

  • 您在 Windows 上构建了 LD?你确定 LD 是你的链接器?
  • 啊,现在我明白了。你知道我应该改用什么吗?
  • 相信你需要ELF格式的LD,但是在使用MinGW时它应该仍然创建一个PE文件(我不是100%当然)。如果您想使用更原生的链接器,我建议您使用 GoLinker@godevtool.com(与同名语言无关)。我对这个链接器有很好的体验。
  • 感谢您的帮助!
  • 随时!我总是很乐意提供帮助!

标签: assembly mingw nasm ld win64


【解决方案1】:

问题:我使用 LD 作为链接器。 LD 在创建时考虑到了 linux,因此从未构建它来编译 win64 目标文件。

解决方案:使用 Windows 的链接器进行编译。感谢 I8086,他在 godevtool.com 上建议了 GoLinker,效果很好。

非常感谢 Michael Petch,他建议使用 Msys2 而不是 MinGW 来为 win64 编译,以及 zx485,他告诉我使用 JLink 和 JWasm。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多