我有一个GCC的问题。它无法找到我的全局变量。我创建了一个简单的C++项目来隔离这个问题:
a.cpp:
我这样编译它:
在上一个命令中改变目标文件的顺序不会有任何变化。链接器为什么会报错?我原本期望只创建一个打印“blah blah”的可执行文件,但是出现了错误。我看不出它应该失败的任何原因。
a.cpp:
#include "b.h"
const char * const g_test = "blah blah";
int main(){
test();
return 0;
}
b.cpp:
#include <iostream>
#include "a.h"
using namespace std;
void test(){
cout << g_test;
}
a.h:
extern const char * const g_test;
b.h:
void test();
我这样编译它:
$ g++ -o a.o -c a.cpp
$ g++ -o b.o -c b.cpp
$ g++ -o test a.o b.o
b.o: In function `test()':
b.cpp:(.text+0x7): undefined reference to `g_test'
collect2: error: ld returned 1 exit status
在上一个命令中改变目标文件的顺序不会有任何变化。链接器为什么会报错?我原本期望只创建一个打印“blah blah”的可执行文件,但是出现了错误。我看不出它应该失败的任何原因。
a.cpp
需要包含a.h
吗? - NathanOliver