linking problem with ld !
Hi all,
I'm working on my diploma work (subject : Efficiency of the GNU tool in a professional project !!!). I'm exploring the binutils' tools, gcc, others...
But I have a problem : I'd like to link a program with ld instead of gcc. Here are the progs (examples !) :
/*a.h*/
int func_a ();
/*a.c*/
#include "a.h"
int func_a ()
{
return 5;
}
/*b.h*/
int func_b ();
/*b.c*/
#include "b.h"
int func_b ()
{
return 10 * 10;
}
/*main2.c*/
#include <stdio.h>
#include "a.h"
#include "b.h"
int
main(int argc, char* argv[])
{
int a = func_a();
int b = func_b();
char c;
char* bc = &c;
printf("hello world,\n");
printf("a - %d; b - %d;\n", a, b);
return 0;
}
If I do a normal compilation with gcc, by
gcc -c a.c b.c ; gcc -o prog a.o b.o main2.c
it produces an execuable, which runs perfectly well (ok, it's a stupid prog !!!)
Now I'd like to link everything with ld :
gcc -c *.c
ld -L./ a.o b.o main2.o -o prog -lc
ld gives a warning :
ld: warning: cannot find entry symbol _start; defaulting to 08048190
Nevertheless, an executable has been produced, but if I execute it :
bash: ./prog: No such file or directory
I've searched the web for an explanation, but I didn't find anything interesting ! Could anyone help me or give me an address where I could find a way of doing this linking ?
Thanks in advance !!!
Gluon
Last edited by gluon; 05-18-2002 at 11:22 AM.
|