2016-05-08 3 views
1

ich die ffmpeg tuorial folgen und installieren ffmpeg über ppaein gcc seltsam ld Fehler, wenn einige ffmpeg Anwendung kompilieren, libvorbisenc Paket nicht gefunden

Aber wenn ich die tuorial02.c kompiliert, ich habe gcc Fehler:

/usr/bin/ld: /opt/ffmpeg/lib//libavcodec.a(libvorbisenc.o): undefined reference to symbol 'vorbis_encode_setup_vbr'

//usr/lib/x86_64-linux-gnu/libvorbisenc.so.2: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status

Mein Kompilierungsbefehl ist:

gcc -I /opt/ffmpeg/include/ -L /opt/ffmpeg/lib/ -o tutorial02 tutorial02.c -lavformat -lavcodec -lswscale `sdl-config --cflags --libs` -lpthread -lz -lm -ldl 

ich den Grund stundenlang gesucht haben. Ich kann das nicht lösen. Kann mir jemand helfen?

Hinzugefügt Ich habe -lvorbisenc zu Ende hinzufügen. Der Fehler ist lib nicht gefunden. und libvorivisenc2 wurde installiert. so ist diese Frage nicht ein Duplikat Strange linking error: DSO missing from command line

Und Mein OS ist Linux Mint 17,3

+0

Versuchen Hinzufügen '-lvorbisenc' bis zum Ende Ihrer Compilieren/Befehl zu verknüpfen. Es sieht so aus, als würde der Linker sich beschweren, dass er 'vorbis_encode_setup_vbr' nicht finden kann, was in [libvorbisenc] (https://xiph.org/vorbis/doc/vorbisenc/vorbis_encode_setup_vbr.html) definiert ist, was darauf hindeutet, dass dies nicht der Fall ist Verbindung zu ihm. – Cornstalks

+0

Mögliches Duplikat von [Seltsamer Verknüpfungsfehler: DSO fehlt in der Befehlszeile] (http://stackoverflow.com/questions/19901934/strange-linking-error-dso-missing-from-command-line) – Cornstalks

+0

@Cornstalks wenn ich hinzufüge '-lvorbisenc' bis zum Ende meines Befehls. und bekam den Fehler/usr/bin/ld: ** kann -lvorbisenc ** nicht finden. aber Paket libvorbisenc2 wurde installiert. Und mein os ist Linux mint 17.3 – ldkxingzhe

Antwort

1

Der Fehler wird Ihnen sagen, dass die statische Bibliothek libavcodec.a Referenzen Symbole aus libvorbisenc aber libvorbisenc ist nicht explizit in Ihrem Link-Befehl (obwohl es hat einen guten Kandidaten von einer anderen geteilten Bibliothek in dem Verbindungsbefehl gefunden). Sie müssen -lvorbisenc oder $(pkg-config --libs vorbisenc) explizit zu Ihrer Befehlszeile hinzufügen.

(ältere Versionen von binutils würden Sie in gemeinsam genutzten Bibliotheken implizit in dieser Situation bringen;. Aber neuere Versionen von binutils sind strenger)

+0

ja, es mag der Grund sein. aber wenn '-lvorbisenc' hinzugefügt wird, kann der Fehler libvorbisenc nicht gefunden werden. Ich kann das Paket auch nicht finden. Wenn ich '(pkg-config --libs vorbisenc' starte, lautet der Fehler: Package vorbisenc wurde nicht im pkg-config-Suchpfad gefunden. Vielleicht sollten Sie das Verzeichnis, das 'vorbisenc.pc' enthält, der Umgebungsvariablen PKG_CONFIG_PATH hinzufügen Kein Paket 'vorbisenc' gefunden und mein Betriebssystem ist Linux Mint 17.3 Danke – ldkxingzhe

+0

Auf meinem Debian-System enthält 'libvorbis-dev' Paket' vorbisenc.pc', also würde ich überprüfen, ob 'libvorbis-dev' installiert ist .. –

+0

Danke! Es ist libvorbis-dev-Paket enthält. Aber leider denke ich, dass ich commad falsch ist, gibt es eine Menge Fehler, wie: /libavcodec.a(libmp3lame.o): In der Funktion 'mp3lame_encode_init ': (.text. unwahrscheinlich + 0x169): undefinierter Verweis auf 'lame_init_params ' . Die ffmpeg's Lib ist statische lib. Ist das falsch? Sorry, Sie zu verwirren. – ldkxingzhe

Verwandte Themen