不编译ffmpeg

时间:2018-04-01 21:32:07

标签: c gcc ffmpeg

翻译

我有问题。当我尝试编译一个文件,其中使用gcc连接h文件ffmpeg时,我得到一个错误,在代码ffmpeg中写错了包含,这意味着该文件在当前目录中,尽管它应该在下一个目录。如何解决?

包含在我的C档案中:

#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"

错误:

D:\gcc\bin>gcc -o a a.c -lavutil -lavformat -lavcodec -lz -
lavutil -lm
In file included from a.c:3:0: libavcodec/avcodec.h:31:33: 
fatal error: libavutil/samplefmt.h: No such file or directory 
#include "libavutil/samplefmt.h"
^
compilation terminated.

我的回答:

我只能通过修复源代码来解决问题。首先,我添加了libavutil / avconfig.h文件,其中包含以下内容:

  #ifndef AVUTIL_AVCONFIG_H
  #define AVUTIL_AVCONFIG_H
  #define AV_HAVE_BIGENDIAN 0
  #define AV_HAVE_FAST_UNALIGNED 0
  #endif

然后,如果我看到目录和文件(libavutil / avutil)参与的错误,我在那里添加了“../”,因为这是目录位于导致文件的那一个旁边的情况错误是(../libavutil/avutil.h)。在另一种情况下,如果此文件应在内部(仅当目录名与当前名称匹配时(libavutil / avutil.h)),您可以保留文件名(avutil.h),或者添加“../ “,差异不会。此类操作需要重复约20次,直到所有头文件中的错误消失。之后,您可以安全地编译ffmpeg而无需特殊知识和补丁。在中文网站上找到了avconfig.h的代码。

1 个答案:

答案 0 :(得分:0)

你的编译'语句缺少头文件的位置。建议:

compile / link语句应类似于:

gcc -o a a.c -I./libavutil   -lavutil -lavformat -lavcodec -lz -lavutil -lm

警告:我写了-I参数,好像当前/工作目录包含libavutil作为子目录。如果这不正确,则需要调整该参数。