When in doubt, code and test it, I always say.
Since I always declare a global variable as an extern in a header file, I assumed that either you had done so as well or, if not, that gcc had assumed it to be an extern. To verify what would happen if the extern keyword were left out of the header, I did a quick two-module test project:
// module 1
//int g_int = 0;
g_int = 42;
// module 2
printf("g_int = %d\n",g_int);
Normally, I would have expected to get a link error for multiple definitions of the same variable, so I was surprised by the apparently clean make.
C:\dcw\PROJECTS\TEST>gcc mod1.c mod2.c
g_int = 42
Then I expected each module to have its own copy of g_int so that the change in mod1 would not be seen by mod2. Again I was wrong. I just ran nm on a.exe and there is only one instance of g_int.
Personally, I find gcc to be a bit too accommodating here. Of course, it might just be that my gcc is configured to be less strict than I think it should be (I haven't changed it, so it's set to the installed default -- MinGW installed by Dev-C++ beta 5).