Где находится libavformat для FFMpeg, расположенный на Snow Leopard? - PullRequest
3 голосов
/ 01 марта 2011

Возникла проблема с получением make-файла для поиска правильных библиотек и заголовочных файлов для программы .c, которую я пытаюсь скомпилировать. Я пытаюсь скомпилировать сегментатор с открытым исходным кодом для Apple HTTP Live Streaming, и для его компиляции требуется libavformat и другие библиотеки FFMpeg. Я использовал порты Mac для установки FFMpeg, и когда я запускаю «which ffmpeg» в командной строке, каталог, который он показывает, является opt / local / bin / ffmpeg, но после поиска, кажется, это не каталог с библиотеками.

Кажется, что библиотеки расположены в opt / local / include, потому что именно там я вижу заголовочные файлы. Вот мой make-файл с подозрительным каталогом:

все: gcc -Wall -g live_segmenter.c -o live_segmenter -I / opt / local / include -I / opt / local / bin -I / opt / local / include / libavutil -L / opt / local / include / libavformat -libavformat - L / opt / local / include -libavcodec -L / opt / local / include -libavutil -L / opt / local / include -libavcore -lbz2 -lm -lz -lfaac -lmp3lame -lx264 -lfaad -lpthread

clean:
rm -f live_segmenter

А вот вывод после попытки компиляции:

gcc -Wall -g live_segmenter.c -o live_segmenter -I / opt / local / include -I / opt / local / bin - Я / opt / local / include / libavutil -L / opt / local / include / libavformat -libavformat -L / opt / local / include -libavcodec -L / opt / local / include -libavutil -L / opt / local / include - libavcore -lbz2 -lm -lz -lfaac -lmp3lame -lx264 -lfaad -lpthread

ld: library not found for -libavformat
collect2: ld returned 1 exit status
make: *** [all] Error 1

Я также попытался запустить "ffmpeg -version", чтобы проверить, правильно ли был построен ffmpeg, и, похоже, у меня закончились идеи о том, что делать. Любая помощь или указание в правильном направлении было бы здорово. Спасибо!

1 Ответ

3 голосов
/ 30 сентября 2011

Я думаю, у вас слишком много -I и недостаточно -L.Из gcc (1) в Lion:

-I dir 
   Add the directory dir to the list of directories to be searched for 
   header files.  Directories named by -I are searched before the standard
   system include directories.  If the directory dir is a standard system 
   include directory, the option is ignored to ensure that the default
   search order for system directories and the special treatment of system
   headers are not defeated.

 -L dir
   Add directory dir to the list of directories to be searched for -l.

-l<libname> - это директива компоновщика, которая указывает ld включать lib<libname> из любого места в списке -L каталога.

Попробуйте это,вместо:

gcc -Wall -g live_segmenter.c -o live_segmenter -I/opt/local/include -L/opt/local/lib -lavcodec -lavutil -lavcore -lbz2 -lm -lz -lfaac -lmp3lame -lx264 -lfaad -lpthread

...