【问题标题】:How to make a Makefile for a program for assembly Language?如何为汇编语言程序制作 Makefile?
【发布时间】:2013-09-10 06:17:31
【问题描述】:

我遇到了这个任务,为我用汇编语言制作的程序构建一个 Makefile(没什么花哨的,就像一个 hello world)。该程序在 Linux 32 位中,我正在使用 NASM 汇编程序。到目前为止,我只能找到 C 程序的 Makefile,我知道彼此之间没有太大区别,但我不熟悉这个东西。我有的是这样的:

Program: main.o
    gcc -o Program main.o
main.o: main.asm
    nasm -f elf -g -F stabs main.asm

我不知道这是否正确,或者如果正确,它是如何工作的。我无法尝试代码,因为这台计算机没有 Linux。我真的很想知道代码中发生了什么。

【问题讨论】:

  • 您阅读过任何 Makefile 文档、手册或教程吗?

标签: linux assembly makefile x86 nasm


【解决方案1】:

首先,阅读an introduction to Makefile

make 程序在调用时读取您的 Makefile。它执行给定规则(例如make clean)或执行默认规则(通常是all)。

每个规则都有一个名称、可选的依赖项和要执行的 shell 代码。

如果你使用对象文件,你通常会这样启动你的 Makefile:

all: main.o
    gcc -o PROGRAM_NAME main.o

这里的依赖是main.o,所以必须在代码执行前解决。首先搜索名为main.o 的文件并使用它。如果不存在,则搜索允许生成文件的规则。

你有以下:

main.o: main.asm
    nasm -f elf -g -F stabs main.asm

这里创建main.o 的规则取决于main.asm,这是您的源文件,所以我认为它已经存在。然后执行规则下的代码,并且必须使文件与规则名称匹配。 如果您的 nasm 调用正确,则创建文件并执行 all(或您命名的 Program)的代码。

所以你的 Makefile 应该工作,你只需要测试它以确保:) 它几乎与调用相同:

nasm -f elf -g -F stabs main.asm && gcc -o Program main.o

附带说明,只要您安装了所有工具,您仍然可以在 Windows 上进行测试。 cygwin 项目提供了一个环境,您可以在其中安装makegccnasm

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2011-02-08
    相关资源
    最近更新 更多