2010-10-14 2 views
1

Я пытаюсь перестроить процесс сборки предыдущего сотрудника для какого-то специального программного обеспечения, которое он написал для нас. Я видел, чтобы все было готово для компиляции, но я получаю сообщение об ошибке в процессе компоновки, указывающей на проблему с crypto ++. Любые подсказки?Ошибка связующего Crypto ++ с использованием ANT

compile.util: 

compile: 
    [echo] Compiling: util 
     [cc] Starting dependency analysis for 55 files. 
     [cc] 55 files are up to date. 
     [cc] 0 files to be recompiled from dependency analysis. 
     [cc] 0 total files to be compiled. 

link.util: 

link: 
    [echo] Linking shared library: libutil 
     [cc] 0 total files to be compiled. 
     [cc] Starting link 
     [cc] /usr/bin/ld: /home/john/softwarename/thirdparty/crypto/5.6.1_64/libcryptopp.a(cryptlib.o): relocation R_X86_64_32 against `CryptoPP::DEFAULT_CHANNEL' can not be used when making a shared object; recompile with -fPIC 
     [cc] /home/john/softwarename/thirdparty/crypto/5.6.1_64/libcryptopp.a: could not read symbols: Bad value 
     [cc] collect2: ld returned 1 exit status 

BUILD FAILED 
/home/john/softwarename/build/build.xml:167: Following error occured while executing this line 
/home/john/softwarename/build/link.xml:27: gcc failed with return code 1 

Os является Fedora 11

ответ

1

Каждый объектный файл связывании в общей библиотеке должна быть позиция независимой, то есть загрузчик может переместить его туда, куда он хочет в памяти, и он все равно будет работать. Ваша крипто-библиотека не была скомпилирована таким образом, поэтому предупреждение о ее перекомпиляции с помощью -fPIC добавлено в ваши флаговые компиляции. Кроме того, вы можете сделать libutil статической библиотекой вместо общей. Без дополнительной информации о ваших файлах сборки я не могу предоставить более подробную информацию о том, как это сделать или какой из них выбрать.

+0

При дальнейших исследованиях, я думаю, что мой файл сборки ANT ожидает 'libcryptopp.so' в моем каталоге crypto. Но после загрузки источника crypto ++ и запуска 'make', он создает кучу файлов .o и файл libcryptopp.a. Как мне получить файл libcryptopp.so? Я новичок в GCC и ANT, так что извините, если это звучит как вопрос компиляции noob. –

+0

В make-файле внутри каталога crypto добавьте '-fPIC' в конец' CXXFLAGS', затем выполните 'make clean' и повторите попытку. –

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

  • Нет связанных вопросов^_^