yasm,ld,gcc可以排除不必要的部分吗? 我希望gcc在C / C ++中排除它。
;testSize1.asm
segment .text
global main
extern printf,scanf ;<== difference part
main:
push rbp
mov rbp,rsp
sub rsp,16
mov rax,2
leave
ret
;testSize2.asm
segment .text
global main
;extern printf,scanf ;<== difference part
main:
push rbp
mov rbp,rsp
sub rsp,16
mov rax,2
leave
ret
我编译并链接这些命令。
yasm -f elf64 -l testSize1.lst testSize1.asm
gcc -o testSize2 testSize2.o
-rwxrwxr-x 1 joe joe 8562 Jun 26 15:20 testSize1
-rw-rw-r-- 1 joe joe 119 Jun 26 15:16 testSize1.asm
-rw-rw-r-- 1 joe joe 822 Jun 26 15:20 testSize1.lst
-rw-rw-r-- 1 joe joe 624 Jun 26 15:20 testSize1.o
-rwxrwxr-x 1 joe joe 8475 Jun 26 15:21 testSize2
-rw-rw-r-- 1 joe joe 120 Jun 26 15:20 testSize2.asm
-rw-rw-r-- 1 joe joe 627 Jun 26 15:20 testSize2.lst
-rw-rw-r-- 1 joe joe 560 Jun 26 15:20 testSize2.o
testSize1.o的大小大于testSize2.o。