ld链接器的输出可执行文件比golink输出可执行文件大,为什么?

时间:2014-02-06 06:43:59

标签: windows assembly linker nasm ld

我汇总了一个包含nasm的简单代码,并将输出obj文件与ldgolink联系起来 问题是 golink输出可执行文件的大小为2kb 但 ld输出可执行文件大小为85kb

我正在使用mingw32并且两者都在使用库kernel32.dll

链接命令是:

golink /entry _start /console test.obj kernel32.dll

&安培;

gcc test.obj-L kernel32.dll

那么为什么尺寸上存在巨大差异?

我做错了吗?请你赐教。

1 个答案:

答案 0 :(得分:1)

要使用GCC达到2KB的可执行文件大小,请运行以下命令:

gcc test.obj -nostartfiles -s

与GoLink链接器相比,默认情况下,GCC在可执行文件中包含更多数据。一个简单的gcc命令包含一个符号表,重定位信息和一些其他引用。我们使用-s标志删除符号表和重定位信息,并使用-nostartfiles标志停止使用标准系统启动文件(引用其他内容)。