请问一个C++的编译有关问题

请教一个C++的编译问题
#include <iostream>
using namespace std;
class A
{
public:
  static int a;
  static int setaa(int b)
  {
  A::a = b;
  return 1;
  }
};

A abc;
int main(int argc, char **argv)
{
  A::setaa(8);
  cout<<"a is %d"<<abc.a<<endl;
  return 1;
}
用g++ 编译总是有如下error,请问如何消除.
g++ test1.cpp
/tmp/ccTxFUQ7.o: In function `main':
test1.cpp:(.text+0x18): undefined reference to `A::a'
/tmp/ccTxFUQ7.o: In function `A::setaa(int)':
test1.cpp:(.text._ZN1A5setaaEi[A::setaa(int)]+0x7): undefined reference to `A::a'
collect2: ld returned 1 exit status





------解决方案--------------------
int A::a = 0 
?
------解决方案--------------------
探讨
static 定义之后还是要声明的,亲。

#include <iostream>
using namespace std;
class A
{
public:
static int a;
static int setaa(int b)
{
A::a = b;
return 1;
}
};

int A::a = 0;

A abc;
i……