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

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

/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 как предлагает компилятор, но я понятия не имею, как. Любая помощь приветствуется.

46

Решение

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

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

56

Другие решения

Посмотри на эта страница.

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

13

После этапа настройки у вас, вероятно, есть make-файл. Внутри этого make-файла ищите CFLAGS (или аналогичные). puf -fPIC в конце и снова запустить make. Другими словами, -fPIC — это опция компилятора, которую нужно где-то передать компилятору.

5

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

«source rules.mk»

-1
По вопросам рекламы [email protected]