【发布时间】:2017-11-05 14:21:37
【问题描述】:
我正在使用 GCC 编译 C 代码,并在 Windows 上使用 NASM 组装一些 x86 代码。
现在,默认情况下,GCC(我还没有找到更改此选项的选项)在所有外部符号名称(和预期名称)前添加下划线 _。
我需要此汇编代码才能在 Windows 和 Linux 上与 GCC 一起使用,并且希望尽可能避免黑客攻击(以及代码重复;我最初为 Windows/Linux 有单独的 .s 文件)。
我发现(并使用了)NASM 中的--prefix 标志。现在对于一些符号,我希望 NASM 将它们视为 没有 前导下划线(现在的确切情况是我需要在链接器脚本中引用没有前导下划线的入口点)。因此,这里的问题是如何根据符号覆盖 NASM 的 --prefix/--postfix 标志。
请随意将此视为 XY 问题。例如,如果有办法为 C 设置 GCC 的修改方案,那就太好了。
【问题讨论】:
-
关于“请随意将其视为 XY 问题。”。我很好奇您是否这样做是为了构建操作系统?
-
@MichaelPetch - 确实:D 我正在与其他人一起通过Little OS Book 工作,我们希望尽可能在 Windows 和 Linux 上编译相同的代码。跨度>
标签: c gcc nasm name-mangling linker-scripts