本文介绍了同时建立它采用特征值,对C ++模板库线性代数项目编译器错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的项目,我利用本征的C ++库线性代数和当我打开矢量化标记(mfpu =霓虹灯-mfloat-ABI = softfp)为ARM NEON,我让编译器错误。我无法理解怎么回事错了。我是否需要启用ARM NEON任何preprocessor指令本征库中?


的main.c

 #包括LT&;&iostream的GT;
#包括LT&;艾根/酷睿>//进口最常见的类型本征
使用本征空间;INT主(INT,CHAR * [])
{
    Matrix4f立方米;
    M3<< 1,2,3,0,4,5,6,0,7,8,9,0,0,0,0,0;
    Matrix4f M4;    ASM(#从这里开始);
    M4 = M3 *立方米;
    ASM(#到此为止);    性病::法院LT&;< M3 \\ n<< M3<< \\ NM4:\\ n
        << M4<<的std :: ENDL;    性病::法院LT&;< DONE!
}

生成文件

 主:main.cpp中
    G ++ -mfpu =霓虹灯-mfloat-ABI = softfp -I /家庭/ Ubuntu的/文件/本征/ -o main.cpp的主

错误

  Ubuntu的@ Ubuntu的桌面:〜/文档/ mat_mul $化妆
G ++ -mfpu =霓虹灯-mfloat-ABI = softfp -I /家庭/ Ubuntu的/文件/本征/ -o main.cpp的主
在文件从/家/ Ubuntu的/文件/本征/艾根/核心包括:227,
                 从main.cpp中:2:
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:在函数'类型名征:: ei_packet_traits< T> ::类型艾根:: ei_pload(常量标*)[标量=浮动]':
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:163:错误:无法转换'const的浮动*'到'常量float32_t *'的参数'1'到'__builtin_neon_sf __vector__ vld1q_f32 (常量float32_t *)'
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:在函数'类型名征:: ei_packet_traits< T> ::类型艾根:: ei_ploadu(常量标*)[标量=浮动]':
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:166:错误:无法转换'const的浮动*'到'常量float32_t *'的参数'1'到'__builtin_neon_sf __vector__ vld1q_f32 (常量float32_t *)'
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:在函数'无效征:: ei_pstore(标* const的包和放大器;)[标量=浮动,包= __builtin_neon_sf __vector__] ':
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:169:错误:不能将浮动*'到'float32_t *'的说法1到无效vst1q_f32(float32_t * ,__builtin_neon_sf __vector__)
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:在函数'无效征:: ei_pstoreu(标* const的包和放大器;)[标量=浮动,包= __builtin_neon_sf __vector__] ':
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:172:错误:不能将浮动*'到'float32_t *'的说法1到无效vst1q_f32(float32_t * ,__builtin_neon_sf __vector__)
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:在函数'类型名征:: ei_unpacket_traits< T> ::类型艾根:: ei_pfirst(常量包和放大器;)与包= __builtin_neon_sf __vector__]:
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:179:错误:不能将浮动*'到'float32_t *'的说法1到无效vst1q_f32(float32_t * ,__builtin_neon_sf __vector__)
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:在函数'类型名征:: ei_unpacket_traits< T> ::本征型:: ei_ predux(常量包和放大器;) [与包= __builtin_neon_sf __vector__]:
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:216:错误:不能将浮动*'到'float32_t *'的说法1到无效vst1_f32(float32_t * ,__builtin_neon_sf __vector__)
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:在函数'类型名征:: ei_unpacket_traits< T> ::本征型:: ei_ predux_mul(常量包和放大器;) [与包= __builtin_neon_sf __vector__]:
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:289:错误:不能将浮动*'到'float32_t *'的说法1到无效vst1_f32(float32_t * ,__builtin_neon_sf __vector__)
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:在函数'类型名征:: ei_unpacket_traits< T> ::本征型:: ei_ predux_min(常量包和放大器;) [与包= __builtin_neon_sf __vector__]:
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:320:错误:不能将浮动*'到'float32_t *'的说法1到无效vst1_f32(float32_t * ,__builtin_neon_sf __vector__)
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:在函数'类型名征:: ei_unpacket_traits< T> ::本征型:: ei_ predux_max(常量包和放大器;) [与包= __builtin_neon_sf __vector__]:
/home/ubuntu/Documents/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:348:错误:不能将浮动*'到'float32_t *'的说法1到无效vst1_f32(float32_t * ,__builtin_neon_sf __vector__)
使:*** [主]错误1
Ubuntu的@ Ubuntu的桌面:〜/文档/ mat_mul $


我得到了

错误,当我用code的Sourcery工具链

  Ubuntu的@ Ubuntu的桌面:〜/文档/ codeSourcery_WS / Test_Eigen $使
/家庭/ Ubuntu的/ codeSourcery / Sourcery_G ++ /斌/ ARM-NONE-Linux的gnueabi-C ++ -mfpu =霓虹灯-mfloat-ABI = softfp -I /家庭/ Ubuntu的/文件/本征/ -o main.cpp的主
1:在文件main.cpp中,从包括:
/home/ubuntu/$c$cSourcery/Sourcery_G++/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/include/c++/4.4.1/iostream:39:致命错误:比特/ C ++的config.h:没有这样的文件或目录
编译终止。
使:*** [主]错误1


解决方案

看起来像GCC的bug,它真的应该混合float和float32_t没有错误。检查的出来。

编辑:这已被固定在codeSourcery工具链。这是从发行说明:

这篇关于同时建立它采用特征值,对C ++模板库线性代数项目编译器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-24 09:56