caffe перекомпилирует с ошибкой -fPIC libglog.a

Я пытаюсь установить Caffe на Debian, но когда я делаю make all, я получаю эту ошибку:

/usr/bin/ld: /usr/local/lib/libglog.a(logging.cc.o): перемещение R_X86_64_32 против `.rodata' нельзя использовать при создании общего объекта; перекомпилировать с -fPIC

/usr/local/lib/libglog.a: не удалось прочитать символы: неверное значение

collect2: ошибка: ld вернул 1 статус выхода make: *** [.build_release/lib/libcaffe.so] Ошибка 1

где я должен добавить флаг -fPIC? Я тоже читал, что gflags этого мало.

Какие-либо предложения?


person user2071581    schedule 10.11.2015    source источник
comment
Есть ли у Caffe документация по добавлению к какой-либо конкретной CFLAGS-подобной переменной? Вы также можете сообщить им, что их сборка сломана (потому что это так) и что они должны справиться с этим сами.   -  person Etan Reisner    schedule 10.11.2015
comment
я не могу найти документацию о добавлении конкретных CFLAGS   -  person user2071581    schedule 10.11.2015
comment
О, хм, я не правильно прочитал эту ошибку. Это может быть проблемой из-за того, как вы скомпилировали библиотеку glog. (Я предполагаю, что вы скомпилировали ее самостоятельно.) Возможно, вам придется перекомпилировать эту библиотеку с помощью -fPIC.   -  person Etan Reisner    schedule 10.11.2015
comment
после некоторых попыток я решил перекомпилировать glog и gflags с -fPIC спасибо :)   -  person user2071581    schedule 11.11.2015
comment
Если вы можете написать свое решение, вы должны добавить его в качестве ответа здесь и принять его. Вы также можете сообщить об этом glog людям.   -  person Etan Reisner    schedule 11.11.2015
comment
У меня такая же ошибка, но с libboost-python.a /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libboost_python.a(dict.o): relocation R_X86_64_32 against .rodata.str1.1' нельзя использовать при создании общего объекта; перекомпилировать с -fPIC`   -  person spiderface    schedule 02.11.2016


Ответы (2)


Похоже, единственное решение — перекомпилировать проблемные сторонние программы с помощью -fPIC. (Если вы не можете ссылаться на .so вместо .a)
Стандартная сборка статических библиотек в пакетах — это сборка без -fPIC.
Например, в glog вы должны добавить его к флагам C в compile.ac.

person rkellerm    schedule 06.09.2017

В glog добавление -fPIC к AM_CXXFLAGS в Makefile.am работает. Добавление его в переменную окружения CXXFLAGS на меня не повлияло.

person nnnmmm    schedule 16.11.2018