好吧,今天搜了好多地方也没找到gcc和nasm的区别,这里把自己各方查找结果总结下。
我们看到对于gcc来说,它是可以直接生成可执行文件,这个文件是经过链接的。因为gcc -c生成的是只编译不链接的可执行文件。
那么对于nasm的话,它编译一个汇编代码,生成的是一个.o文件,可见是未经过链接的,在Linux中必须经过ln进行链接才能被执行!
这就是它们的区别!
#########
2017.8.6
在《深入理解计算机系统》这本书中,有这样一幅图可以帮助我们理解。
好吧,今天搜了好多地方也没找到gcc和nasm的区别,这里把自己各方查找结果总结下。
我们看到对于gcc来说,它是可以直接生成可执行文件,这个文件是经过链接的。因为gcc -c生成的是只编译不链接的可执行文件。
那么对于nasm的话,它编译一个汇编代码,生成的是一个.o文件,可见是未经过链接的,在Linux中必须经过ln进行链接才能被执行!
这就是它们的区别!
#########
2017.8.6
在《深入理解计算机系统》这本书中,有这样一幅图可以帮助我们理解。