搞了很久才搭建成功,记录一下
建议刚入门的同学学习的时候,尽量先选择一种汇编格式走下去,不然很容易搞混,打击自信心。
我采用的环境搭配是汇编器NASM、链接器GCC中的ld、系统64位的CentOS8
gcc
一般linux系统中都会自带的有gcc,而gcc中包含链接器ld,如果后面提示版本信息错误请更新gcc版本
nasm
按照官网的提示,如果需要使用yum安装nasm的话,将nasm.repo源安装到yum的源目录下,CentOS8的yum源的位置为
/etc/yum.repos.d
,nasm.repo文件内容如下
[nasm]
name=The Netwide Assembler
baseurl=http://www.nasm.us/pub/nasm/stable/linux/
enabled=1
gpgcheck=0
[nasm-testing]
name=The Netwide Assembler (release candidate builds)
baseurl=http://www.nasm.us/pub/nasm/testing/linux/
enabled=0
gpgcheck=0
[nasm-snapshot]
name=The Netwide Assembler (daily snapshot builds)
baseurl=http://www.nasm.us/pub/nasm/snapshots/latest/linux/
enabled=0
gpgcheck=0
然后使用
yum install nasm
即可安装,
nasm -v
查看版本信息
demo
- 编写汇编文件
- 使用nasm汇编器进行汇编生成目标文件
- 使用gcc的链接器ld对目标文件进行链接生成可执行文件
简单的汇编demo
section .data
section .text
global main
main:
mov eax, 1
inc eax
mov ebx, eax
mov eax, 1
mov ebx, 0
int 80h
编译链接命令
# 32 bit version
# nasm -f elf demo.s -o demo.o
# ld -e main -m elf_i386 demo.o -o demo
# 64 bit version
# 编译命令,执行后生成目标文件
nasm -f elf64 demo.s -o demo.o
# 链接命令,执行后生成可执行文件
ld -e main -m elf_x86_64 demo.o -o demo
然后使用
./demo
就可以执行了,不过应该是没什么感觉的,可以使用调试工具gdb来更加直观的感受,下次见。
版权声明:本文为qq_40522155原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。