Was tun mit der Nachricht "Mit -fPIC neu kompilieren"?

7

Ich versuche, das ffmpeg-Quellpaket so zu konfigurieren, dass .so-Dateien anstelle von .a-Dateien erstellt werden.

Ich renne makehinterher./configure --enable-shared

Dies gibt mir die folgende Nachricht:

/usr/bin/ld: libavutil/display.o: relocation R_X86_64_PC32 against undefined symbol 'hypot@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC

Ich bin mir jedoch nicht sicher, wo und wie ich das Flag -fPIC hinzufügen soll.

A1A2A3A4
quelle
.so-Dateien sind der Standard in Ubuntu. In welchen (binären) Paketen können Sie keine .so-Dateien finden?
Saiarcot895

Antworten:

2

Es gibt eine ./configure-Option, mit der das Problem möglicherweise am einfachsten gelöst werden kann:

andrew@ilium~/source/ffmpeg_build/ffmpeg/ffmpeg$ ./configure --help | grep -i pic
--enable-pic             build position-independent code
andrew.46
quelle
1

Ich habe den gleichen Fehler beim Kompilieren von FFMpeg 2.3.3-Quellen unter Ubuntu 14.04 LTS behoben. Ich habe successfuly den Code kompiliert , nachdem gesetzt LD_LIBRARY_PATHzu /usr/lib/x86_64-linux-gnuund fügte hinzu -fPICFlagge --cc. Meine funktionierenden Kompilierungsbefehle sind hier:

LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
./configure --prefix=.. --enable-shared --enable-gpl --enable-version3 --enable-runtime-cpudetect --disable-outdev=sdl --disable-opencl --enable-libmp3lame --enable-libx264 --cc="gcc -m64 -fPIC" --extra-cflags="-I../include" --extra-ldflags="-L../lib -ldl"
make -j4
Erol Ozcan
quelle
Vergessen Sie nicht, nach dem Hinzufügen des -fPIC-Flags
0

Die Verschiebung von R_X86_64_PC32 gegen ein undefiniertes Symbol erfolgt normalerweise, wenn LDFLAGS auf Härten eingestellt sind und CFLAGS nicht.
Möglicherweise nur ein Benutzerfehler:
Wenn Sie zur Verbindungszeit -specs = / usr / lib / rpm / redhat / redhat-hardened-ld verwenden, müssen Sie auch -specs = / usr / lib / rpm / redhat / redhat-hardened verwenden -cc1 zur Kompilierungszeit, und da Sie gleichzeitig kompilieren und verknüpfen, benötigen Sie entweder beide oder löschen die -specs = / usr / lib / rpm / redhat / redhat-hardened-ld. Allgemeine Korrekturen:
https://bugzilla.redhat.com/show_bug.cgi?id=1304277#c3
https://github.com/rpmfusion/lxdream/blob/master/lxdream-0.9.1-implicit.patch

Sérgio
quelle