请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

export PKG_CONFIG_PATH=/usr/local/ffmpeg/lib/pkgconfig

export PKG_CONFIG_PATH=/usr/local/ffmpeg/lib/pkgconfig

老师这段代码是什么意思?
再问下mac下如何设置包路径?我这边设置了上面那段代码然后再运行

clang -g -o ffmpeg_log ffmpeg_log.c `pkg-config --libs --cflags libavutil`

才可以

正在回答 回答被采纳积分+3

2回答

慕粉3536494 2019-11-09 17:43:24

我也是mac,遇到了这个问题。环境变量已配置,echo $PATH可以看到正确配置的环境信息。所有的.pc文件均可找到,但还是报如上错误,请问何解?

0 回复 有任何疑惑可以回复我~
  • 李超 #1
    pkg-config 工具没安装吧?你执行一下这个命令,看看结果是什么
    回复 有任何疑惑可以回复我~ 2019-11-10 07:08:05
  • 慕粉3536494 回复 李超 #2
    pkg-config安装了,要不然在mac中无法编译出ffmpeg。刚执行了一把这个指令,执行都结果是:
    admindeMacBook-Pro:~ admin$ pkg-config
    Must specify package names on the command line
    回复 有任何疑惑可以回复我~ 2019-11-10 18:55:06
李超 2018-09-26 23:44:50

你问了一个很好的问题,这就涉及到Linux/Mac下的编译机制了。如果对Linux不熟悉的话,是很难理解上面为什么要这样做的。

无论是在Linux系统下还是在Window系统下,大家对PATH都比较了解。只要我们将一个可执行程序放在 PATH这个路径下,那么无论我在哪里执行这程序,它都能正常执行,这个你是有体会的对吧。

为什么会这样呢?这是因为我们在运行这个程序的时候,操作系统会到 PATH的路径上查找每一个目录下是否有我们要执行的程序。如果找到了,它才会真正调用那个目录下的我们要执行的程序。否则,如果操作系统找不到,它会给我们一个提示信息,说没有这个程序。

对于编译也是类似的原理。在我们执行上面那行编译指令的时候,其中的 pkg-config 命令是到 PKG_CONFIG_PATH指定的路径下找指定库的 .pc 文件,然后从.pc文件中拿到需要的库路径,名称以及头文件。有了库文件,和头文件之后,我们才能编译成功。

你可按我说的到 usr/local/ffmpeg/lib/pkgconfig目录下,看看是否有libavutil libavformat等相关的.pc文件存在,再看看里边的内容你就清楚了。

0 回复 有任何疑惑可以回复我~
  • 谢谢老师的讲解。
    但是我设置 export PKG_CONFIG_PATH=/usr/local/ffmpeg/lib/pkgconfig 之后。 看了usr/local/ffmpeg/lib/pkgconfig 目录下也有libavutil libavformat等相关的.pc文件,但是也要加 `pkg-config --libs --cflags libavutil` 才能编译成功,这个是为什么?
    回复 有任何疑惑可以回复我~ 2019-07-30 11:32:07
  • 李超 #2
    这个环境变量就是找到这个.pc文件呀,后面那个命令是为了读.pc 文件的内容。现在如果不能理解他的话,就先照着做,等过一段时间对Linux 熟悉了,你就理解了,不必在这里纠结哈
    回复 有任何疑惑可以回复我~ 2019-07-31 07:14:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信