libavutil/log2_tab.o: file not recognized: file format not recognized collect2: error: ld returned 1 exit status make: *** [ffbuild/library.mak:103: libavutil/libavutil.so.56] Error 1
时间: 2023-08-25 12:31:40 浏览: 65
这个错误通常是由于编译器或链接器版本不兼容导致的。您可以尝试以下解决方案:
1. 检查您的编译器和链接器版本是否匹配,如果不匹配,请更新它们到最新版本。
2. 清除您的项目并重新编译。您可以尝试使用以下命令来清除项目:
```
make clean
```
3. 如果您使用的是第三方库,请确保它们已正确安装并与您的编译器和链接器兼容。
4. 如果您使用的是自定义的Makefile,请确保它正确配置了库路径和依赖项。
如果以上方法仍未解决问题,请提供更多详细信息,例如您的编译器和链接器版本、您的操作系统和您的项目配置。
相关问题
fatal error: libavutil/time.h: No such file or directory
这个错误提示是说在编译过程中找不到libavutil/time.h文件。根据引用,这个错误是由于缺少linux/perf_event.h文件导致的。可以根据引用中的方法,在libavutil目录下创建一个avconfig.h文件,然后在avconfig.h文件中添加以下内容:
```
/* Generated by ffconf */
#ifndef AVUTIL_AVCONFIG_H
#define AVUTIL_AVCONFIG_H
#define AV_HAVE_BIGENDIAN 0
#define AV_HAVE_FAST_UNALIGNED 0
#endif /* AVUTIL_AVCONFIG_H */
```
如果问题仍然存在,可以尝试根据引用中的方法进行操作。具体步骤是进入/ijkplayer-master/config目录,查看module-default.sh文件的最后一行是否包含以下内容:
```
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
```
如果没有的话,可以手动添加这一行。然后执行以下命令:
```
cd config
rm module.sh
ln -s module-lite.sh module.sh
```
这样应该能解决缺少libavutil/time.h文件的错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [/libavutil/timer.h:38:31: fatal error: linux/perf_event.h: No such file or directory](https://blog.csdn.net/wusejiege6/article/details/108310915)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* [fatal error: libavutil/avconfig.h: No such file...](https://blog.csdn.net/athrunsunny/article/details/122369052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
undefined reference to `av_frame_get_best_effort_samples' collect2: error: ld returned 1 exit status
这个错误通常是因为链接错误导致的。av_frame_get_best_effort_samples是FFmpeg中的一个函数,需要引用FFmpeg的库才能正确链接。解决这个错误的方法通常有两种:
1. 在编译时链接FFmpeg库
在编译时需要加上FFmpeg的库路径和库名,例如:
```
gcc -o myprogram myprogram.c -lavutil -lavformat -lavcodec -lswscale -lswresample
```
其中,-lavutil、-lavformat、-lavcodec、-lswscale、-lswresample是FFmpeg库的名称,可以根据实际情况进行修改。
2. 在代码中引入FFmpeg头文件
如果已经在代码中引入了FFmpeg头文件,但是仍然无法链接av_frame_get_best_effort_samples函数,可能是因为链接时没有指定正确的库路径或库名。这时可以尝试在代码中添加以下语句:
```
extern "C" {
#include <libavutil/frame.h>
}
```
这段代码会告诉编译器在链接时需要使用libavutil库中的frame.h头文件,从而解决链接错误。