[开发笔记] unbutu 安装 LTP 报错:expected , or ; before __m256 解决方案
之前在我的 deepin (基于 debian )安装 LTP 时曾出现过一次编译错误,是一个指针的强制类型转换问题,需要手动进行强制类型转换。
现在我打算在我的服务器上部署我的项目,需要在 unbutu 上再次安装 LTP,不出所望,再一次编译错误。
错误信息为:
同时还有以下错误等:
对于
对于 C++/C 的项目编译错误一般没什么好的办法,就是去看他的代码然后不断 Debug,把错误解决。找到第一个报错的地方(一定要首先解决第一个报错点,因为之后的错误很有可能是依赖之前的错误导致的。)
该处代码为:
#ifdef EIGEN_VECTORIZE_AVX512DQ // AVX512F does not define _mm512_extractf32x8_ps to extract _m256 from _m512 #define EIGEN_EXTRACT_8f_FROM_16f(INPUT, OUTPUT) \ __m256 OUTPUT##_0 = _mm512_extractf32x8_ps(INPUT, 0) __m256 OUTPUT##_1 = \ _mm512_extractf32x8_ps(INPUT, 1) #else
我一开始以为是代码折行出什么问题了,就把 ‘\' 都删了,但是似乎没什么变化。然后仔细看了一下错误的地点,提示我在 第二个 __m256 前加 ';' ,我先对比了在我 deepin 上的这部分代码,发现二者是相同的。但是也没有办法,不同系统 C++ 编译情况本来就有差异,所以就添加一个 ';’ 在第二个 __m256 前,然后所有的错误都消失了,项目被成功编译。
我的操作步骤是:删除了所有报错部分折行的 '\'(非必要),并添加了一处 ’;' 。
编译成功。