编译过时的c ++程序包:未定义的引用错误

| 我正在尝试使用g ++ 4.4.5在Ubuntu中编译一个名为SNoW的系统。该软件似乎已针对g ++ 3.1.4进行了最新更新,因为我在检查该文件的文件中发现一个开关,其中最大的情况是3.1.4 +。 我不得不更新一些头文件以获取过去的编译器错误... cstring而不是string之类的东西。现在,我陷入了未定义的引用错误,其中未定义的引用是对提供的标头中的函数的引用。 错误是这样的:
Main.o: In function `ShowUsage(char const*)\':
Main.cpp:(.text+0x140e): undefined reference to `Fex::logo\'
...来自Main.cpp:
cerr << Fex::logo[0] << endl;
Fex.h位于Main.cpp的顶部,而Fex.h中Fex类的公共成员之一是:
static const char * logo[];  
因此,Main.o的Makefile是:
fex : Main.o 
    $(CC) -O2 -o fex Main.o $(LINKFLAGS)

Main.o : Main.cpp FexGlobalParams.h Fex.h libfex.a
    $(CC) $(CCFLAGS) -o Main.o Main.cpp
我曾尝试在repos(4.3)中将CC设置为g ++的最早版本,并重新对Makefile中的标头进行重新排序,但均不成功,因此不确定该怎么做。我找不到现成的g ++ 3.1副本,软件创建者非常确信该文件是上次使用g ++ 3.1时在Linux上编译的。 是否有人发现可能出问题的地方,或者对尝试的事情有任何建议?     
已邀请:
虽然静态成员的声明可能在
Fex.h
头中,但在某个地方需要单个成员的定义(通常在
Fex.cpp
文件中):
const char * Fex::logo[ /* you\'ll need some size here, too */ ];  
我似乎还记得,GCC会自动为这些\'phantom \'静态成员生成一个定义-也许他们已经改变了(或添加了编译器选项)? -我想到的是GCC,假设没有指定大小的静态分配数组将默认为一个元素,但这仅是C。     

要回复问题请先登录注册