error: /tmp/SASM/macro.o: No such file or directory

error: /tmp/SASM/macro.o: No such file or directory

我一直在使用 NASM 研究 SASM ide。构建时,此错误不断重复出现

Build started...
Warning! Errors have occurred in the build:
gcc: error: /tmp/SASM/macro.o: No such file or directory

%include "io.inc"

section .data
    msg db 'Hello, world!', 0

section .text
    global CMAIN
CMAIN:
    mov ebp, esp
    PRINT_STRING msg
    NEWLINE
    xor eax, eax
    ret

我还在 Ubuntu 14.04 上将 SASM 用于 NASM 程序集,使用生成文件方法安装后遇到了同样的问题。我使用正确的软件包正确删除并重新安装了它:

https://build.opensuse.org/package/binary/home:Dman95/SASM?arch=x86_64&filename=sasm_3.2.0_amd64.deb&repository=xUbuntu_14.04

  1. 检查您是否满足所有要求(右下角)
  2. 下载 .deb 包
  3. 双击并安装

现在它应该可以工作了。 (感谢我的朋友告诉我应该怎么做。)

我今天遇到了同样的问题(使用 ubuntu 14.04 lts intel 64 位)但我通过 ubuntu 的 logitec 添加 gcc-multilib 解决了它。

您可以 运行 此命令 Ubuntu:

sudo apt install gcc-multilib

(毫无疑问,gcc 编译 - 并且能够做到 - macro.c(or/and 其他)在链接程序 nasmhello 之前生成缺少的 macro.o?)

问题似乎是缺少 gcc 编译器。如果您在 x64 上 运行 sasm 并为 x86 构建,则需要交叉编译器。如上所述,您可以安装 gcc-multilib。或者,您可以在“设置”->“构建”中更改 "Mode",以便您正在构建的平台与您正在构建的平台相同。

SASM Options

正如其他人所提到的,确认您正在针对正确的体系结构进行编译。您的输出没有显示任何与体系结构相关的消息(即 "instruction does not exist in x32"),因此情况可能并非如此。如果您能够在没有错误的情况下启动应用程序并开始编译您的程序,那么您可能正在处理构建问题。

这些是使用 nasm 的 x64 架构的示例构建设置。更改以满足您的需求:

装配选项:

-g -f elf64 $SOURCE$ -l $LSTOUTPUT$ -o $PROGRAM.OBJ$

链接选项:

$PROGRAM.OBJ$ $MACRO.OBJ$ -g -o $PROGRAM$ -no-pie

汇编程序路径:

nasm

链接器路径:

gcc

对象文件名:

program.o