天天看點

Makefile編譯 ffmpeg time.h沖突問題點:原因:解決方案

參考連結https://blog.csdn.net/u011118092/article/details/53945652

編譯代碼,需要用到ffmpeg相關庫功能,用ubuntu交叉編譯時報錯,找不到系統time.h相關結構體。

問題點:

ffmpeg頭檔案libavutil/time.h與系統time.h沖突。編譯報錯。
           
Makefile編譯 ffmpeg time.h沖突問題點:原因:解決方案

原因:

編譯時系統根據 **-I/path/...**指定路徑優先查找頭檔案,由于ffmpeg的include檔案夾下找到了time.h,編譯時就不會再去查找系統的time.h檔案,導緻參數對不上,編譯失敗;
           

解決方案

寫Makefile時,指定include路徑時隻到include這一層,不要再包含下一層例如

舊的Makefile
...-I/usr/local/ffmpeglib/include/libavdevice/...
...-I/usr/local/ffmpeglib/include/libavformat/...
           

改後的Makefile

...-I/usr/local/ffmpeglib/include/...
           

編碼時使用帶路徑包含例如 #include “libavutil/time.h”