Я использую статическую библиотеку, допустим cityhash, которую я создал и установил в/usr/local/lib. У меня есть файл, который использует foo.cxx cityhash, например:GCC не связывает статическую библиотечную зависимость (makefile)
// 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
, все работает нормально.