FFMPEG: undefined reference to `avcodec_register_all' kein link

Also ich habe ein sehr Beispiel-code für den Versuch zu entschlüsseln FFMPEG-video-stream.
Mein problem ist avcodec nicht verlinken möchten, tun, damit ich eine saubere installation von Ubuntu 13.04. Ich habe die build von ffmpeg aus dem Quellcode nach der Anleitung hier: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

Ich will einfach nur meine Datei kompilieren. Beachten Sie, dass mein ubuntu nicht alle Implementierungen oder header-Dateien für avcodec. Die Befehlszeile, die ich benutze ist:

gcc -I/home/USER/ffmpeg_build/include -L/home/USER/ffmpeg_build/lib -lavcodec -o test.exe Downloads/auv/src/dronerosvideo/src/ar2.cpp

/tmp/ccKTprFq.o: In Funktion `fetch_and_decode(int, int, bool)':

ar2.cpp:(.text+0x36e):
undefined reference to `avcodec_register_all'

ar2.cpp:(.text+0x378):
undefined reference to `av_log_set_level'

ar2.cpp:(.text+0x382):
undefined reference to `avcodec_find_decoder'

ar2.cpp:(.text+0x3b1):
undefined reference to `avcodec_alloc_context3'

ar2.cpp:(.text+0x3d6):
undefined reference to `avcodec_open2'

ar2.cpp:(.text+0x46d):
undefined reference to `av_init_packet'

ar2.cpp:(.text+0x50a):
undefined reference to `avcodec_decode_video2'

ar2.cpp:(.text+0x534):
undefined reference to `av_free_packet'

/tmp/ccKTprFq.o:(.eh_frame+0x13): undefined reference to
`__gxx_personality_v0'

collect2: Fehler: ld zurückgegeben, 1 exit status

Nur für einen vernünftigen test wenn ich entfernen Sie die argument-L compiler sagt:

/usr/bin/ld: cannot find -lavcodec

Was bedeutet, dass der linker findet die Bibliothek in /home/USER/ffmpeg_build/lib. Auch wenn man die Bibliothek für die Umsetzung vorhanden:

nm ffmpeg_build/lib/libavcodec.a | grep "register_all"
0000000000000000 T avcodec_register_all

Auch, wie empfohlen, da es auf C++ habe ich exten "C" um umfassen die Bibliothek.

In diesem Punkt bin ich Herausfallen irgendwelche Ideen, warum genau Kompilierung fehlschlägt?

  • /usr/bin/ld ist der linker. Sie meinte wahrscheinlich : "der linker findet die Bibliothek in /home/USER/ffmpeg_build/lib'.
  • Ja richtig!!!! Ich werde es ändern.
InformationsquelleAutor Alex Botev | 2014-06-30
Schreibe einen Kommentar