主要步骤
- 预处理
- 将源码编译为汇编语言文件
- 汇编器将汇编语言文件翻译成目标文件
- 链接器将目标文件链接到库文件,解析符号和可执行文件
动手实操 - 从 c 开始
环境:x86-64
//test.c
int main() {return 32;}//custom your exit code
# compile
gcc -S test.c -o test.s
# assemble
gcc -c test.s -o test.o
# link
gcc test.o -o test
# execute
./test
# verify exit code
echo $?
动手实操 - 从 asm 开始
- 架构:x86-64
- 汇编器:NASM
test.asm
global _start
_start:
mov rax, 60
mov rdi, 69 ; custom your exit code here, 0-255
syscall
60是系统调用exit对应的序号:参考 x86-64 syscalls
# assemble
nasm -felf64 test.asm
# link by ld(GUN Linker)
ld test.o -o test
# execute
./test
# verify
echo $?