C Linking Error: undefined reference to 'main'

前端 未结 4 1575
走了就别回头了
走了就别回头了 2021-02-06 22:50

I have read the other answers on this topic, and unfortunately they have not helped me. I am attempting to link several c programs together, and I am getting an error in respons

相关标签:
4条回答
  • 2021-02-06 23:12

    Generally you compile most .c files in the following way:

    gcc foo.c -o foo. It might vary depending on what #includes you used or if you have any external .h files. Generally, when you have a C file, it looks somewhat like the following:

    #include <stdio.h>
        /* any other includes, prototypes, struct delcarations... */
        int main(){
        */ code */
    }
    

    When I get an 'undefined reference to main', it usually means that I have a .c file that does not have int main() in the file. If you first learned java, this is an understandable manner of confusion since in Java, your code usually looks like the following:

    //any import statements you have
    public class Foo{
        int main(){}
     }
    

    I would advise looking to see if you have int main() at the top.

    0 讨论(0)
  • 2021-02-06 23:14

    You are overwriting your object file runexp.o by running this command :

     gcc -o runexp.o scd.o data_proc.o -lm -fopenmp
    

    In fact, the -o is for the output file. You need to run :

    gcc -o runexp.out runexp.o scd.o data_proc.o -lm -fopenmp
    

    runexp.out will be you binary file.

    0 讨论(0)
  • 2021-02-06 23:23

    You're not including the C file that contains main() when compiling, so the linker isn't seeing it.

    You need to add it:

    $ gcc -o runexp runexp.c scd.o data_proc.o -lm -fopenmp
    
    0 讨论(0)
  • 2021-02-06 23:27

    You should provide output file name after -o option. In your case runexp.o is treated as output file name, not input object file and thus your main function is undefined.

    0 讨论(0)
提交回复
热议问题