gpt4 book ai didi

linux - nasm gcc 命令错误,子程序作为单独的文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:32 24 4
gpt4 key购买 nike

在 nasm 中将子程序作为外部文件进行测试。运行后:

nasm -f elf subprogram2.asm
nasm -f elf get_int.asm

然后我运行 gcc:

gcc subprogram2.o get_int.o -o stuff.exe

然后我收到以下错误:

subprogram2.o: In function 'main':
subprogram2.asm:(.text+0x19): undefined reference to 'get_int'
subprogram2.asm:(.text+0x3d): undefined reference to 'get_int'
collect2: error: ld returned 1 exit status
包含 main 的文件的

section .text 同时具有 extern get_intglobal get_int

我正在使用 main 中子程序的调用和返回。我还将指出我正在 32 位 ubuntu Linux 上的虚拟机上运行它。

最佳答案

引自NASM manual :

GLOBAL is the other end of EXTERN: if one module declares a symbol as EXTERN and refers to it, then in order to prevent linker errors, some other module must actually define the symbol and declare it as GLOBAL.

因此,如果在 get_int.asm 中定义了 get_int,则应将 global get_int 放入 get_int.asm,并在想要使用 get_int 的任何其他文件中将其声明为 extern

关于linux - nasm gcc 命令错误,子程序作为单独的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29462853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com