(.text+0x20): undefined reference to `main' and undefined reference to function

前端 未结 2 1484
遥遥无期
遥遥无期 2020-12-15 05:45

I am having issue getting my makefile to work without errors. The first issue i have is with an undefined reference to main. I have main in my producer.c file as a function.

2条回答
  •  执笔经年
    2020-12-15 05:50

    This error means that, while linking, compiler is not able to find the definition of main() function anywhere.

    In your makefile, the main rule will expand to something like this.

    main: producer.o consumer.o AddRemove.o
       gcc -pthread -Wall -o producer.o consumer.o AddRemove.o
    

    As per the gcc manual page, the use of -o switch is as below

    -o file     Place output in file file. This applies regardless to whatever sort of output is being produced, whether it be an executable file, an object file, an assembler file or preprocessed C code. If -o is not specified, the default is to put an executable file in a.out.

    It means, gcc will put the output in the filename provided immediate next to -o switch. So, here instead of linking all the .o files together and creating the binary [main, in your case], its creating the binary as producer.o, linking the other .o files. Please correct that.

提交回复
热议问题