我想使用另一个目录中的函数。所以我把这一行放在最上面,
#include "~/ffmpeg/include/libavcodec/avcodec.h"
然后跑
gcc filename.c
并收到此错误
error: avcodec.h: No such file or directory
拼写正确且文件存在。为什么编译器认为该文件不存在?
答案 0 :(得分:3)
使用:
#include <avcodec.h> /* NOT "avcodec.h" */
然后:
gcc -I/include/file/path/where/avcodec.h/lives
如果使用-I
,请使用尖括号,如果要根据相对于包含#include
的文件的路径进行包含,请使用引号。
我会用:
#include <libavcodec/avcodec.h>
和
$ gcc -I$HOME/ffmpeg/include ...
答案 1 :(得分:1)
#include "~/ffmpeg/include/libavcodec/avcodec.h"
正在使用〜这是KSH和BASH的HOME标识。 您需要使用完整/相对路径作为包含。
答案 2 :(得分:0)
执行此操作的首选方法 - 使代码不必因为标头位于不同的目录中而不必更改,就是放在代码中:
#include <avcodec.h>
然后在编译时添加开关-I
gcc -I/home/<username>/ffmpeg/include/libavcodec
最好使用标题的完整路径。
答案 3 :(得分:-1)
你需要告诉gcc include目录在哪里使用-I以及共享库在哪里-L
gcc -I~/ffmpeg/include -L~/ffmpeg/lib filename.c
将包含更改为
#include "libavcodec/avcodec.h"