未定义对“ STDOUT”程序集的引用

时间:2019-03-11 21:58:24

标签: assembly x86-64 att

我一直试图参加大会。我使用了一个简单的程序,但是无法在我的计算机上编译。我想知道为什么。

代码如下:

.data 
STDIN = 0
STDOUT = 1
SYSWRITE = 1 
SYSREAD = 0
SYSEXIT = 60
EXIT_SUCCESS = 0 
BUFLEN = 512

.bss

.comm textin, 512

.comm textout, 512

.text

.globl _start 

_start:
movq $SYSREAD, %rax 
movq $STDIN, %rdi 
movq $textin, %rsi
movq $BUFLEN, %rdx 
syscall

movq $SYSWRITE, %rax 
movq $STDOUT, %rdi 
movq $textin, %rsi 
movq $BUFLEN, %rdx 
syscall

movq $SYSEXIT, %rax 
movq $EXIT_SUCCESS, %rdi 
syscall

尝试使用gcc -nostdlib file.s -o file进行编译时收到的消息是:

relocation R_X86_64_32S against undefined symbol `textin' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: nonrepresentable section on output

我正在使用如下生成文件:

file:  file.o
ld -o file file.o
file.o:  gcc -g -o file file.s

进行编译。

0 个答案:

没有答案