On 14 October 2011 20:08, <tadam@xxxxxxxxx> wrote: > Hi all, > Is there any "magic" gcc option which would prevent linker successfully link the following program: > ------------------------ file test1.c --------------------------- > int foo; > ------------------------ file test2.c --------------------------- > int foo(int a); > int main (int argc, char argv[]){ foo(0); return 0;} > Compilation and linking with gcc test1.c test2.c -o test > and run./test > gives segmentation fault on my Ubuntu x86 machine. > What I see is that the linker successfully links foo global variable as a global function, which is a nonsense to me.Please advice. > Thank you,--Adel This is a fundamental feature of the C language. Using C++ will "solve" your problem, because the linker would see different symbol names for a variable "foo" and function "int foo(int)"