【发布时间】:2019-01-04 02:35:57
【问题描述】:
我无法编译使用名为“FFmpeg”的库和名为“GCC”的编译器的 C 项目,我相信这可能是因为我不太了解 #include 的工作原理,或者因为我是使用错误的编译过程。
在名为Test 的文件夹中,我有一个文件Test/test.c,其内容如下:
#include <stdio.h>
#include <stdlib.h>
#include "FFmpeg/libavcodec/avcodec.h"
文件夹FFmpeg 位于Test/FFmpeg。当我尝试使用 GCC 编译它时,我收到以下错误:
fatal error: libavutil/samplefmt.h: No such file or directory
文件Test/FFmpeg/libavcodec/avcodec.h中包含以下代码:
#include "libavutil/samplefmt.h"
#include "libavutil/attributes.h"
#include "libavutil/avutil.h"
... //many more #include statements
这里的问题是我需要在所有这些包含语句中添加“FFmpeg/”吗?
如果是这样,有没有办法自动执行此操作?这个库很大,可能有数百个这样的语句。
如果不是,我应该怎么做?我应该尝试自己编译库吗?如果是这样,我如何在我的程序中包含这个编译版本的库?
注意事项:
- 我用来编译的命令是
gcc -c test.c。 - 我通过 MinGW 安装了 GCC。
- 我最终需要能够将此程序编译为
.dll和.so。
如果我在这里使用的任何术语不正确或我的解释很差,我深表歉意。我对编译几乎一无所知。如果我需要填写更多信息,请告诉我。
【问题讨论】:
-
为了快速编译,使用“-I Test/FFmpeg”。我不建议将此作为您的长期解决方案。
-
不需要在标题中添加
FFmpeg/。通常我们只是直接#include <libavcodec/avcode.h>并给 gcc 一些选项来指定在哪里定位额外的第三方头文件。此外,我认为您需要另一个选项来指示 lib 路径。
标签: c++ c gcc ffmpeg compilation