编译AV1编码器libaom的记录
起始编译过程
pthread.h文件
提示缺失pthread.h文件
1 | |
根据教程https://blog.csdn.net/qianchenglenger/article/details/16907821,在windows下配置pthread。
下载pthreads-w32-2-9-1-release.zip,由于年久失修,需要在镜像站下载
https://sourceware.org/mirrors.html->https://mirrors.kernel.org/sourceware/pthreads-win32/。
具体操作只涉及/Pre-built.2中的文件。
1.将/Pre-built.2/include和/Pre-built.2/lib的文件分别放入VS 2019的对应文件夹下。
2.将/Pre-built.2/dll中/x64和/x86的文件分别放入system32和SysWOW64中。
再次pthread.h文件
但完成上述操作后,仍找不到pthread.h文件
虽然命令行终端中显示的报错内容与之前一致,但在Error.log中,增加了一行报错信息。
1 | |
通过这个报错信息可知,我们上一步向VS 2019中添加头文件等操作是起了作用的,虽然终端上仍说找不到pthread.h文件,但报错信息表明cmake已经找到了pthread.h文件。
在pthread.h文件内添加
1 | |
后,终于能找到pthread.h文件
1 | |
但又出现新的问题。
终端下
1 | |
Error.log中
1 | |
把放入系统内存的dll重新向tools下的bin文件夹放了一份,但不起作用,同样的报错。
在https://github.com/tensorflow/tensorflow/issues/5576,有人说把Cmakelist.txt中的
1 | |
注释掉,因为在Windows下根本不需要pthreads。
但我试着单独注释掉上面那句话、注释掉整个if块,都不成功,仍得到同样的报错。
Linux下的结果
在CentOS 7.6 虚拟机下编译
1 | |
同样报错
1 | |
日志文件中
1 | |
(其实在完成上述操作后,编译环境的铺垫已经完成。)
VS模式编译
源码编译
1 | |
使用以下两个命令编译,都不成功,而控制台输出不一致。
1 | |
1 | |
正确而优雅的编译方式,在/aom所在目录下新建/aom_build,执行以下命令。
1 | |
至此,cmake步骤完成,生成包含aom.sln解决方法在内的VS项目。
由sln到exe
在VS中(将语言调整为中文Orz…,)设置好release模式后,开始build,以生成可执行的exe文件。
报错信息如下
1 | |
在将系统内部语言(非显示语言)更改为英语并重新编译源码后,仍是同样的报错。
(检查了其他报错文件,一样的报错)
好吧,专心去解决这个索引1646是什么鬼。
安装VS的桌面版工程组件
虽然这个听上去是必要的,但装上后仍没什么用,一样的报错。
安装工具
没有装perl和Doxygen,前者必须,后者可选。
但装完后,除了在编译完成后能找到Doxygen,VS中多了一个要处理的文件和索引位置延后之外,本质上与之前无区别。
关于GCC
期间安装了GCC,并将MinGW-make.exe改名为make.exe(据说是防止cmake找不到);而之前安装的GnuWin32,其bin也叫make.exe,为了防止冲突,又将GnuWin32从环境变量中删去。
上述操作的一个结果是,在编译aom的doc时,提示缺少dot(但控制台只是提了一下,无waring和error,而且在后续用命令行成功编译exe后,同时编译出的doc也能正常打开(html的doc,而tex的还没看))。
命令行编译
参考https://blog.csdn.net/u014426939/article/details/80080635
生成Cache
1 | |
生成exe
1 | |
相应exe文件在/build/Release中。