C: undefined reference to a variable when using extern

24,577

This looks like a linker error. You need to make sure you link your executable properly:

cc -c general.c
cc -c main.c
cc general.o main.o
./a.out

The -c flag instructs your compiler not to link yet. In order to link the object file containing config needs to be available at that moment.

Share:
24,577
Halona
Author by

Halona

Updated on July 10, 2022

Comments

  • Halona
    Halona almost 2 years

    I try to declare a global variable config:

    //general.h
    
    struct config_t {
        int num;
    };
    
    extern struct config_t config;  //The global variable
    

    Then I define config variable in general.c:

    //general.c
    #include "general.h"
    
    struct config_t config = {
        num = 5;
    };
    

    But, when I try to use the global variable 'config' in my main function, I get the error:

    undefined reference to `config':
    

    Main program:

    //main.c
    #include "general.h"
    
    main() {
        config.num = 10;
    }
    

    Why is it?