编译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
中。