Ale*_*jas 3 linux x86 assembly makefile nasm
我遇到过这个任务,用汇编语言为程序构建一个Makefile(没什么特别的,就像一个hello world).该程序是Linux 32位,我正在使用NASM汇编程序.到目前为止,我只能为C程序找到Makefiles,我知道彼此之间没有太大区别,但我不熟悉这个东西.我有的是这个:
Program: main.o
gcc -o Program main.o
main.o: main.asm
nasm -f elf -g -F stabs main.asm
Run Code Online (Sandbox Code Playgroud)
我不知道这是否正确,或者如果是,它是如何工作的.我无法尝试代码,因为这台计算机没有Linux.我真的很想知道代码中发生了什么.
Geo*_*roy 11
首先,阅读Makefile的介绍.
您的Makefile由make程序在调用时读取.它执行给定规则(例如make clean)或执行默认规则(通常all).
每个规则都有一个名称,可选的依赖项和要执行的shell代码.
如果您使用对象文件,您通常会启动您的Makefile:
all: main.o
gcc -o PROGRAM_NAME main.o
Run Code Online (Sandbox Code Playgroud)
这里的依赖是main.o,所以必须在执行代码之前解决它.首先搜索已命名的文件main.o并使用它.如果它不存在,则搜索允许制作文件的规则.
你有以下几点:
main.o: main.asm
nasm -f elf -g -F stabs main.asm
Run Code Online (Sandbox Code Playgroud)
这里制定的规则main.o取决于main.asm你的源文件,所以我认为它已经存在.然后执行规则下的代码,并且必须使文件与规则名称匹配.如果nasm调用正确,则创建文件并执行all(或Program命名)的代码.
所以你的Makefile 应该可以运行,你只需要测试它就可以了:)它几乎与调用相同:
nasm -f elf -g -F stabs main.asm && gcc -o Program main.o
Run Code Online (Sandbox Code Playgroud)
作为旁注,只要安装了所有工具,您仍然可以在Windows上进行测试.在Cygwin的项目提供了在那里你可以安装一个环境make,gcc和nasm.
| 归档时间: |
|
| 查看次数: |
15899 次 |
| 最近记录: |