Forum: ARM programming with GCC/GNU tools Linking two files with 2 mains using objcopy

von Opt E. (Company: self) (opt)

Rate this post
not useful
Hi Experts,
I am working in a project to link two files with two mains.
i.e file 1 is having main()
file2 is having main()

Like this:
int main(){
printf("I am from main 1\n");
return 0;

int main(){
printf("I am from main 2\n");
return 0;
Compiling and linking with the help of makefile.

I know this is not possible since linker will throw when it sees 2 mains 
which results in error "Multiple definition".

I tried one way using objcopy to redefine symbols in one file .
i.e file2 sybmols is renamed to main2__main using
"objcopy --prefix-symbols main2_ main2.o".

But after doing this in linker stage it is giving error undefined symbol
main2__main. Why this is coming?
Any one can give there expert opinion?

If any body has a similar makefile can you please share it?
Is there any other alternative way? I don't want to use #ifdef ...#endif 
for any of files since I want this to happen @ at link time.


: Edited by User
von Eric (Guest)

Rate this post
not useful
Why do you have two main() routines?
What do you want to achieve with this?
Why don't you just rename one of them into main2()?
Do you realize that the C runtime can only call one main(), so having 
two main()s is doesn't even make sens?

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.