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