Makefile:运行“make all”时出错

问题描述 投票:0回答:2

当我运行 make all 规则中指定的相同 gcc 命令时,我没有收到错误。但是当我运行 make all 时,我收到了一堆错误。为什么会出现这种情况?

生成文件:

all: program.c
      gcc -I$HOME/ffmpeg/include program.c -L$HOME/ffmpeg/lib -lswscale -lavdevice -lavfilter -lswscale -lswresample -lavformat -lavcodec -lavutil -lz -lm -lpthread -o program

运行gcc命令:

 (No error)

运行 make all:

gcc -IOME/ffmpeg/include program.c -LOME/ffmpeg/lib -lswscale -lavdevice -lavfilter -lswscale -lswresample -lavformat -lavcodec -lavutil -lz -lm -lpthread -o program
program.c:15:32: error: libavcodec/avcodec.h: No such file or directory
program.c:16:32: error: libswscale/swscale.h: No such file or directory
program.c:17:34: error: libavformat/avformat.h: No such file or directory
program.c:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
program.c:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
program.c:95: error: expected ')' before '*' token
program.c:128: error: expected ')' before '*' token
program.c:201: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
program.c: In function 'main':
program.c:253: error: 'AVFrame' undeclared (first use in this function)
program.c:253: error: (Each undeclared identifier is reported only once
program.c:253: error: for each function it appears in.)
program.c:253: error: 'loaded_image' undeclared (first use in this function)
program.c:255: error: 'img_copy' undeclared (first use in this function)
program.c:255: error: 'AV_PIX_FMT_RGB24' undeclared (first use in this function)
program.c:256: error: 'current_frame' undeclared (first use in this function)
make: *** [all] Error 1
c++ c gcc makefile
2个回答
5
投票

$HOME
在您的
OME
环境中扩展为
make
。 如果你想让shell展开它,你需要转义它:

  gcc -I$$HOME/ffmpeg/include ...

现在发生在您身上的是

make
$H
扩展为空,然后按原样使用该行的其余部分。


2
投票

在命令行(shell)上使用

$HOME
和在 Makefile 中使用
$HOME
是有区别的。

在 Makefile 中,必须用括号将变量名称括起来,例如

all: program.c
      gcc -I$(HOME)/ffmpeg/include program.c -L$HOME/ffmpeg/lib -lswscale -lavdevice -lavfilter -lswscale -lswresample -lavformat -lavcodec -lavutil -lz -lm -lpthread -o program

请参阅变量引用基础知识来自环境的变量了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.