所以我有两个文件夹:
/ ffmpeg
/ myproj
在myproj内部,我有一个主要方法:
#include <stdio.h>
#include <stdlib.h>
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
int main(int argc, char *argv[])
{
AVFormatContext *pFormatCtx = NULL;
if (avformat_open_input(&pFormatCtx, argv[1], NULL, 0) != 0)
return -1;
return EXIT_SUCCESS;
}
我试图像这样编译该文件:
cc main.c -I../ffmpeg ../ffmpeg/libavformat/utils.o
并收到此错误:
"_ffio_set_buf_size", referenced from:
_ff_configure_buffers_for_index in utils.o
ld: symbol(s) not found for architecture x86_64
我明白这是什么意思-我需要包括utils.o的依赖项,该依赖项存储在utils.d文件中。但是,如何在命令行上执行此操作?有很多吨的依赖关系,我知道人们不会手动输入这些信息!
您的方向错误,应该与共享库(libav)链接。将这些行添加到您的Makefile
(并根据您的设置修复路径):
LIBAV_PATH = /path/to/ffmpeg/lib/pkgconfig/
PKG_DEPS = libavformat libswscale libswresample libavutil libavcodec
CFLAGS = `PKG_CONFIG_PATH=$(LIBAV_PATH) pkg-config --cflags $(PKG_DEPS)`
LDFLAGS = `PKG_CONFIG_PATH=$(LIBAV_PATH) pkg-config --libs $(PKG_DEPS)`
在PKG_DEPS
我提供的许多库中,您可能不需要所有库,请删除那些不必要的库(但请稍后再做-首先按原样尝试)。
您的all:
行应类似于:
all: main.c
@gcc -I$(INCLUDE) main.c -o test.out $(CFLAGS) $(LDFLAGS)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句