Как пересобрать с -спос
Я пытался переустановить свой 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"