我在组装和链接我的 64 位汇编文件时遇到问题。我该如何修复错误?

问题描述 投票:0回答:0

最近在学习汇编语言,想运行64位的汇编代码文件。 但是当我尝试使用

gcc -o test1 test1.s
命令组装和链接我的文件时,我遇到了一个错误:

/usr/bin/ld: /tmp/ccdyRWWG.o: relocation R_X86_64_32S against `.data' can not be used when making a PIE object; recompile with -fPIE
collect2: error: ld returned 1 exit status

这是我写的代码。

        .section ".rodata"

printFormat:
     .asciz "%d\n"

### --------------------------------------------------------------------

        .section ".data"

### --------------------------------------------------------------------

        .section ".bss"

### --------------------------------------------------------------------

        .section ".text"



    .text
    .globl  main
    .type   main, @function


main:

    movq  $0x1111222233334444, %rax
    pushq %rax
    pushq $printFormat
    call printf
    addq $16, %rsp

    movq $0, %rax
    ret

如果我在主函数中删除

pushq $printFormat
,我可以汇编/链接文件,但是上面编写的代码出错。我该如何解决这个问题?

assembly gcc x86-64 gnu-assembler
© www.soinside.com 2019 - 2024. All rights reserved.