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

时间:2015-04-05 22:16:25

标签: linux gcc nasm

在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
包含section .text的文件的

main同时包含extern get_intglobal get_int

我正在使用一个电话并返回main中的子程序。 我还会指出我在32位ubuntu linux上的vm上运行它。

1 个答案:

答案 0 :(得分:0)

引用NASM manual

  

GLOBALEXTERN的另一端:如果一个模块将符号声明为EXTERN并引用它,那么为了防止链接器错误,其他一些模块必须实际定义符号并将其声明为GLOBAL

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