Библиотека состоит из двух частей: интерфейса (<libavformat/avformat.h>
) и реализации. Вы должны включить оба.
Если у вас нет файла avformat.h
, вы получите ошибку об отсутствующем файле или использовании неопределенных функций. Вы не получаете эти сообщения об ошибках, поэтому мы можем быть уверены, что вы avformat.h
включены.
Если вы не свяжетесь с библиотекой, вы получите неопределенные ошибки символов. Это ошибки, которые вы получаете, обычно вы должны связать с -lavformat
, но в зависимости от путей поиска в библиотеке вам также может понадобиться передать параметр -L
. Кроме того, вы можете указать полный путь к библиотеке, который будет выглядеть примерно так: /usr/local/lib/libavformat.a
или /usr/local/lib/libavformat.dylib
(или что-то еще), но это обычно не рекомендуется, поскольку это может сделать ваши скрипты сборки более хрупкими.
Я бы ожидал увидеть что-то вроде этого:
cc -Wall -Wextra playground/remuxing.c -lavformat
Если /usr/local/lib
отсутствует в пути поиска в библиотеке, вы добавили бы его с помощью -L
:
cc -Wall -Wextra playground/remuxing.c \
-L/usr/local/lib -lavformat
Если libavformat является статической библиотекой с зависимостями, вам также нужно будет включить эти зависимости. Если это динамическая библиотека, это не нужно. Вы можете полностью избежать вопроса, используя pkg-config
, если он установлен в вашей системе:
cc -Wall -Wextra playground/remuxing.c \
$(pkg-config --cflags --libs avformat)
(Не уверен, что avformat
является правильным названием здесь, но в целом вы хотите использовать pkg-config
для поиска библиотек, если у вас нет веских причин не использовать его.)