(Running MingW on 64-bit Windows 7 and the GCC on Kubuntu)
This may possibly be just a MingW problem, but it's failed on at least one Kubuntu installation as well, so I'm doubtful.
I have a short, simple C program, which is supposed to call an assembly function. I compile the assembler using nasm and the c program using MingW's implementation of the gcc. The two are linked together with a makefile - bog-simple. And yet, linkage fails on the claim the claim that the external function is an 'undefined reference'
Relevant part of the makefile:
assign0: ass0.o main.o gcc -v -m32 -g -Wall -o assign0 ass0.o main.o main.o: main.c gcc -g -c -Wall -m32 -o main.o main.c ass0.o: ass0.s nasm -g -f elf -w+all -o ass0.o ass0.s The beginning of the assembly file:
section .data ; data section, read-write an: DD 0 ; this is a temporary var section .text ; our code is always in the .text section global do_str ; makes the function appear in global scope extern printf do_str: ; functions are defined as labels [Just Code] And the c file's declaration:
extern int do_str(char* a); This has worked on at least one Kubuntu installation, failed on another, and failed on MingW. Does anyone have an idea?
_gets prepended to symbol names. What's the exact error message you get?_on the assembly side, not the C side, if that's in fact the problem. There can't be an 'undefined reference' error related to a source code line - it's a link error. Please copy and paste the full text here.