Как перекомпилировать с-fPIC

Я пытался переустановить свой ffmpeg, следуя этому руководство, на моей машине Ubuntu ARM. К сожалению, когда я компилирую программу, которая использует этот lib, я получаю следующий сбой:

/usr/bin/ld: /usr/local/lib/libavcodec.a(amrnbdec.o): relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

теперь я хотел бы перекомпилировать его с -fPIC как компилятор предлагает, но я понятия не имею, как. Любая помощь приветствуется.

4 ответов


Короче, эта ошибка означает, что вы не может использовать статическую библиотеку для связи с динамической. Правильный способ-скомпилировать libavcodec .так что вместо этого .а, так другой .поэтому библиотеки вы пытаетесь построить бедет хорошо.

самый короткий способ сделать это-добавить --enable-shared at ./configure параметры. или даже вы можете попытаться отключить общие (или статические) библиотеки вообще... вы выбираете то, что подходит именно вам!


посмотреть этой странице.

вы можете попробовать глобально добавить флаг, используя:export CXXFLAGS="$CXXFLAGS -fPIC"


после шага настройки у вас, вероятно, есть makefile. Внутри этого makefile найдите CFLAGS (или аналогичный). puf-fPIC в конце и запустить снова. Другими словами-fPIC-это параметр компилятора, который должен быть передан компилятору где-то.


перед компиляцией убедитесь, что " правила.Mk " файл включен правильно в Makefile или включить его явно:

"исходные правила.МК"