Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22002

How to specify Win32 as output when invoking GCC using MinGW on Windows

$
0
0

How to specify Win32 as output when invoking GCC using MinGW on Windows.

Below I've posted my source code. My objective is to interface assembly with C code and produce an executable.

I start assembling the add.asm to Win32 using the following NASM command:

nasm -f win32 add.asm

Then it should be possible to invoke GCC using both C and object files?

gcc -o add add.obj call_asm.c

However, this results in an a linkage error:

C:\Users\nze\AppData\Local\Temp\cckUvRyC.o:call_asm.c:(.text+0x1e): undefined reference to `add'collect2.exe: error: ld returned 1 exit status

If I instead compile to ELF using

nasm -f elf add.asm

the command (this time using the ELF file add.o)

gcc -o add add.o call_asm.c

works perfectly.

How can I tell GCC that my object files are in Win32 format, so that it should compile call_asm.c to Win32 before linking? (I guess this is the core of the problem, please comment whether I'm correct).

call_add.c:

#include <stdio.h>extern int add(int a, int b);int main(){  printf("%d", add(7, 6));}

add.asm:

    BITS 32    global _add_add:    push ebp    mov ebp, esp    mov eax, [ebp+8]    mov ebx, [ebp+12]    add eax, ebx    mov esp, ebp    pop ebp    ret

Viewing all articles
Browse latest Browse all 22002

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>