Hallo zusammen,
ich habe nicht sonderlich viel Erfahrung mit makefiles, insofern hoffe ich auf Geduld und Milde. Vor Jahren habe ich mir über die Paketquellen (trusty) ffmpeg auf dem Rechner installiert, die dann ja unter /opt landen. Nun wollte ich einen (fremden) source code kompilieren, der vom ffmeg abhängig ist. Selbiges schlägt schon mal fehl, weil die gleichen includes und libs auch von libavutil bereitgestellt werden, nur in einer zu alten Version. (Ich weiß, dass es eine neuere Version von Ubuntu gibt. Aber die Frage interessiert mich auch davon unabhängig). Ich habe schon viele Tage damit verbracht, herauszufinden, wie man gegen eine andere, statisch gelinkte Version (also in dem Fall die unter /opt/ffmpeg) kompiliert. Jetzt endlich habe ich eine Version gefunden, die so halbwegs funktioniert. Zumindest werden scheinbar die ffmpeg libraries genommen.
Das war der Originaleintrag:
1 2 | _CFLAGS += $(shell pkg-config --cflags alsa libva libavcodec libswscale libswresample x11 x11-xcb xcb xcb-icccm xcb-screensaver xcb-dpms) LIBS += -lrt $(shell pkg-config --libs alsa libva libavcodec libswscale libswresample x11 x11-xcb xcb xcb-icccm xcb-screensaver xcb-dpms) |
und mit viel Bastelei habe ich das daraus gemacht:
1 2 3 4 5 6 7 8 9 10 11 12 | #_CFLAGS += -FPIC LIBDIR = /opt/ffmpeg/lib _CFLAGS += -I/opt/ffmpeg/include _CFLAGS += $(shell pkg-config --cflags alsa libva x11 x11-xcb xcb xcb-icccm xcb-screensaver xcb-dpms) LIBS += -lrt $(shell pkg-config --libs alsa libva x11 x11-xcb xcb xcb-icccm xcb-screensaver xcb-dpms) _CFLAGS += -I/opt/ffmpeg/include/libswresample _CFLAGS += -I/opt/ffmpeg/include/libavcodec _CFLAGS += -I/opt/ffmpeg/include/libswscale LIBS += -L/opt/ffmpeg/lib -lavcodec LIBS += -L/opt/ffmpeg/lib -lswresample LIBS += -L/opt/ffmpeg/lib -lswscale |
Endlich meine Fragen: Wie könnte ich das z.B. mit pkg-config eleganter machen? Wie könnte ich sagen, dass die .pc Dateien in den Fällen aus dem ffmpeg Verzeichnis genommen werden sollen? In meinen Zeilen ist sicherlich einiges nicht notwendig, zu viel oder zu wenig. Bitte gerne den Rotstift ansetzen.
Als letzte Fehlermeldung erhalte ich
/usr/bin/ld: /opt/ffmpeg/lib/libavcodec.a(allcodecs.o): Die Umlagerung von /opt/ffmpeg/lib/libavcodec.a: error adding symbols: Ungültiger Wert collect2: error: ld returned 1 exit status
Kann damit jemand was anfangen?
Vielen Dank im voraus
Alex