错误:/tmp/SASM/macro.o:没有这个文件或目录。

3

我一直在使用NASM和SASM IDE进行开发。在构建时,出现了以下错误:

构建开始...
警告!构建过程中发生了错误:
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

在我的Debian Jessie系统上,我通过git克隆了Github存储库,运行了“make install”,安装了“nasm”,并且能够运行“sasm”,而且您的应用程序编译、链接并运行没有任何问题。 “sasm”在帮助/关于框中显示3.2.0版本。 - Michael Petch
我很好奇你在“设置”菜单下有什么,构建选项卡中有什么,以及正在使用的“链接器选项”行是什么。 - Michael Petch
同时,您使用哪个操作系统作为开发环境也可能会有所帮助(Linux/OSX/Windows等)。 - Michael Petch
我正在使用Ubuntu 14.04... 我尝试安装宏,但在open()中出现了问题。 - edaddou
从头开始构建程序,获取最新的源代码,安装所有列出的依赖项(大多数与qt4相关),然后执行sudo make install(在Ubuntu上需要使用sudo来提升权限以正确安装)来构建和安装程序。 - Michael Petch
显示剩余4条评论
4个回答

8

今天我遇到了同样的问题(使用ubuntu 14.04 LTS Intel 64位),但是我通过在ubuntu的Logitec中添加gcc-multilib解决了它。

你可以在Ubuntu上运行以下命令:

sudo apt install gcc-multilib

(毫无疑问,gcc编译器可以编译macro.c(或者其他文件),并在连接程序nasmhello之前生成缺失的macro.o文件。)

1
谢谢,安装了gcc-multilib解决了我的问题。 - Amin Shojaei
无法找到包gcc-multili。 - Epic Speedy

2
这个问题似乎源于缺少gcc编译器。如果你在x64上运行sasm并为x86构建,则需要一个交叉编译器。如上所述,你可以安装gcc-multilib。或者,你可以在“设置 -> 构建”中更改“模式”,使你正在构建的平台与你正在构建的平台相同。 SASM选项

0

正如其他人所提到的,确认你是为正确的架构进行编译。你的输出没有显示任何与架构有关的消息(例如,“在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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接