开发者

In function `_start': init.c:(.text+0x30): undefined reference to `main'

开发者 https://www.devze.com 2022-12-28 18:49 出处:网络
I\'m working on a C project with around 30 source files (.c). I\'m building this project on a 32 bit micro-controller(i.MX515) running on Ubuntu using GNU tools.

I'm working on a C project with around 30 source files (.c). I'm building this project on a 32 bit micro-controller(i.MX515) running on Ubuntu using GNU tools.

The compilation phase completes successfully, however when the linking process starts I get this error (For full error at the end of the quesiton):

In function `_star开发者_Python百科t': init.c:(.text+0x30): undefined reference to `main'

I have a main() function which does a simple printf().

My Makefile line for linking, looks like this.

final: $(OBJDIR)/main.o $(OBJDIR)/TchClaKnn_BuildKdtreeInt.o $(OBJDIR)/TchClaKnn_FreeKdtreeInt.o.... (Go upto 30 files like this)
    @echo ".Linking"
    $(CC) $(LFLAGS) -o $(OBJDIR)/main.o $(OBJDIR)/TchClaKnn_BuildKdtreeInt.o $(OBJDIR)/TchClaKnn_FreeKdtreeInt.o..... (Go upto 30 files like this)

Help!!!

Regards

Vikram


Complete linking error

/usr/lib/gcc/arm-linux-gnueabi/4.3.3/../../../crt1.o: In function `_start':
init.c:(.text+0x30): undefined reference to `main'
collect2: ld returned 1 exit status
make[1]: *** [final] Error 1
make[1]: Leaving directory `/home/ubuntu/Documents/Project/IMX_Project_v1'
make: *** [all] Error 2


final depends on main.o (and a bunch of others), but, your makefile is taking all the 'others' and outputting them in main.o (that's what -o does in most compilers)

edit your link line to : -o final $(OBJDIR)/main.o


The linker cannot find the object code for the source that has main() defined in it. Probably its not getting compiled. Check that whichever of the 30 files it is that has main() in it, is getting compiled to .OBJ.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号