我汇总了一个包含nasm
的简单代码,并将输出obj文件与ld
和golink
联系起来
问题是
golink输出可执行文件的大小为2kb
但
ld输出可执行文件大小为85kb
我正在使用mingw32并且两者都在使用库kernel32.dll
。
链接命令是:
golink /entry _start /console test.obj kernel32.dll
&安培;
gcc test.obj-L kernel32.dll
那么为什么尺寸上存在巨大差异?
我做错了吗?请你赐教。
答案 0 :(得分:1)
要使用GCC达到2KB的可执行文件大小,请运行以下命令:
gcc test.obj -nostartfiles -s
与GoLink链接器相比,默认情况下,GCC在可执行文件中包含更多数据。一个简单的gcc
命令包含一个符号表,重定位信息和一些其他引用。我们使用-s
标志删除符号表和重定位信息,并使用-nostartfiles
标志停止使用标准系统启动文件(引用其他内容)。