2016-01-16 3 views
0

Я использую статическую библиотеку, допустим 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, все работает нормально.

ответ

Смежные вопросы