我一直试图参加大会。我使用了一个简单的程序,但是无法在我的计算机上编译。我想知道为什么。
代码如下:
.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
进行编译。