【问题标题】:Does not compile ffmpeg [duplicate]不编译ffmpeg [重复]
【发布时间】:2018-09-11 04:06:45
【问题描述】:

已翻译。

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

包含在我的 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的代码在中文网站上找到。

【问题讨论】:

标签: c gcc ffmpeg


【解决方案1】:

您的“编译”语句缺少头文件的位置。建议:

编译/链接语句应该类似于:

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

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

【讨论】:

  • 这对我没有帮助。我尝试 -I./libavutil 、 -I./libavcodec 、 -I./libavformat。为什么我在文件 avcodec.h 中看到错误?编辑此文件并修复错误的目录?还是什么???
  • 你可以-I./libavutil , -I./libavcodec , -I./libavformat开头不正确,参数之间没有逗号
  • gcc -o a a.c -I./libavutil -I./libavcodec -I./libavformat -lavutil -lavformat -lavcodec -lz 没有帮助。还有什么方法可以修复依赖关系?
  • 关于:-lavutil -lavformat -lavcodec(假设这些是子目录和库名称的缩写形式)` -L./avutil -lavutil -L./avformat -lavformat -L./avcodec - lavcodec`
猜你喜欢
  • 2016-06-27
  • 2020-09-22
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 2014-10-04
  • 2013-05-15
  • 2022-01-07
相关资源
最近更新 更多