【发布时间】:2013-11-19 02:02:53
【问题描述】:
我运行了一段简单的 hello world 的 x86-64 汇编代码。
.global main
.text
main:
mov $message, %rdi
sub $8, %rsp
call puts
add $8, %rsp
ret
message:
.asciz "Hello, World"
我在我的64位windows操作系统下使用cygwin下的gcc_4.8.2编译这个程序。
gcc -o helloworld helloworld.s
但编译器总是给我错误:
/tmp/ccylxw5q.o:fake:(.text+0x3): relocation truncated to fit: R_X86_64_32S against `.text'
如何解决这个问题?
【问题讨论】:
-
您的编译器是否创建 64 位代码?如果是 cygwin,它可能不会。
-
实际上是创建64位代码,否则编译器会报错寄存器。
-
我建议你在 C "Hello, World" 代码上运行
gcc -S以便你可以看到差异。