Как пересобрать с -спос
Я пытался переустановить свой ffmpeg, следуя этому руководству, на моей машине ARM Ubuntu. К сожалению, когда я компилирую программу, которая использует этот 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
в./configure
опции. или даже вы можете попытаться отключить общие (или статические) библиотеки вообще... вы выбираете то, что подходит именно вам!
Взгляните на этой странице.
Вы можете попробовать глобально добавить флаг, используя:
export CXXFLAGS="$CXXFLAGS -fPIC"