【发布时间】:2016-01-16 04:08:35
【问题描述】:
我使用一个静态库,假设我已经构建并安装到 /usr/local/lib 的 cityhash。我有一个使用 cityhash 的文件 foo.cxx,例如:
// foo.cxx
u64 get_hash(const std::string &s) {
return CityHash64(s.data(), s.size());
}
我用它构建了一个静态库:
gcc -c foo.cxx => foo.o
ar rcs libfoo.a foo.a => libfoo.a
我有另一个文件 bar.cxx,它使用 foo.cxx 和间接使用 CityHash 函数。我编译它,并与 libcityhash.a 和 libfoo.a 链接,如下所示:
gcc -c bar.cxx => bar.o
gcc -L. -o bar bar.o -lcityhash -lfoo
但这不起作用,链接器抱怨 CityHash64 是未定义的引用。怎么了?当我不创建静态库 libfoo.a 时,一切正常。
【问题讨论】: