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

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

Rate this post
0 useful
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
0 useful
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?


Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]

Bild automatisch verkleinern, falls nötig
Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.