无法编译nasm程序

时间:2018-02-07 17:04:29

标签: gcc assembly 64-bit nasm archlinux

尝试编译此代码:

global main

extern printf

[section .data]
    fmtStr: db "Input string", 0xA, 0

[section .text]
    main:
        push rbp
        push fmtStr
        call printf
        pop rbp
        ret

第一步顺利:

  

nasm -f elf64 printf.asm -o printf64.o

但是gcc失败了:

  

gcc printf64.o -o printf64

     

/ bin / ld:printf64.o:针对`.data'重新定位R_X86_64_32S制作共享对象时不能使用;用-fPIC重新编译

     

/ bin / ld:最终链接失败:输出中不可表示的部分   collect2:错误:ld返回1退出状态

我有

  

Linux 4.14.8-1-ARCH x86_64

     

gcc(GCC)7.2.1 20171128

     

GNU ld(GNU Binutils)2.29.1

0 个答案:

没有答案