lpflpf

搬砖程序员带你飞

砖搬得多了,就能盖楼

编译依赖问题的一个坑

记录一次gcc,编译静态库依赖顺序导致编译失败的问题。

假设有个cpp,依赖两个静态库。静态库代码如下:

1
2
3
4
5
// a.cpp
// g++ -c a.cpp
// ar cr a.a a.o
// 
void a() {}
1
2
3
4
5
// b.cpp 依赖 a.cpp
// g++ -c b.cpp
// ar cr b.a b.o
extern void a();
void b() {a();}
1
2
3
4
5
6
7
8
// main.cpp 依赖 b.cpp 
extern void b();
int main()
{
    b(); // 调用b.cpp中的b()
    return 0;

}

针对main.cpp 的编译,就会出现问题。 在GNU 的g++ 版本中,必须要使用 g++ main.cpp b.a a.a ; 如果使用 g++ main.cpp a.a b.a 会报如下错误:

0%