Jak przekompilować za pomocą-fPIC

Próbowałem ponownie zainstalować mój ffmpeg, zgodnie z tym Przewodnik , na moim komputerze ARM Ubuntu. Niestety, kiedy kompiluję program, który używa tej lib, dostaję następującej porażki:

/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

Teraz chciałbym go przekompilować -fPIC tak jak sugeruje kompilator, ale nie mam pojęcia jak. Każda pomoc jest mile widziana.

Author: jww, 2012-12-11

4 answers

W skrócie, błąd oznacza, że nie można użyć biblioteki statycznej do połączenia z dynamiczną . Poprawnym sposobem jest skompilowanie libavcodec do .so zamiast .a, więc druga .więc biblioteka, którą próbujesz zbudować, będzie dobrze się łączyć.

Najkrótszym sposobem na to jest dodanie --enable-shared w ./configure opcji. możesz też spróbować w ogóle wyłączyć biblioteki współdzielone (lub statyczne)... Ty wybierasz to, co jest dla Ciebie odpowiednie!

 55
Author: zaufi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-06 13:25:46

Spójrz na tę stronę.

Możesz spróbować globalnie dodać flagę używając: export CXXFLAGS="$CXXFLAGS -fPIC"

 13
Author: Kraiden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-27 07:57:01

Po kroku konfiguracja prawdopodobnie masz plik makefile. W tym pliku makefile poszukaj CFLAGS (lub podobnych). puf-fPIC na końcu i uruchomić ponownie. Innymi słowy-fPIC jest opcją kompilatora, która musi być gdzieś przekazana kompilatorowi.

 5
Author: dmaij,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-11 01:36:31

Przed kompilacją upewnij się, że "rules.mk" plik jest poprawnie dołączany do Makefile lub dołączany jawnie przez:

"źródło rules.mk"

 -1
Author: Dark Coder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-26 05:13:55