Can't compile asm hello world with gcc

Viewed 1274

This is the code in hello.s

.data                         

hello_str:                    
    .string "Hello, world!\n"


    .set hello_str_length, . - hello_str - 1

.text                         

.globl  main                  

.type   main, @function       


main:
    movl    $4, %eax      

    movl    $1, %ebx     

    movl    $hello_str, %ecx  

    movl    $hello_str_length, %edx 

    int     $0x80        

    movl    $1, %eax      
    movl    $0, %ebx      
    int     $0x80         

    .size   main, . - main   

I run gcc hello.s -o hello and get this error:

/usr/bin/ld: /tmp/cc6ILJpd.o: relocation R_X86_64_32 against '.data' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output

collect2: error: ld returned 1 exit status

Then I've tried running gcc hello.s -fPIC -o hello, but it didn't do anything, the error is the same.

What am I doing wrong? Ubuntu 17.04, GCC 6.3.0.

1 Answers
Related