Linux下stb_image编译报错:_mm_slli_si128需8位立即数求助
解决stb纹理加载中
_mm_slli_si128/_mm_srli_si128编译错误问题 针对你遇到的Debug模式下本该跳过的SSE优化代码却触发编译错误的问题,给出几个可行的解决方向:
强制禁用stb的SSE优化
在包含stb头文件之前,添加宏定义#define STBI_NO_SSE,直接跳过所有SSE相关的优化代码,从根源上避开这个编译问题。示例代码:#define STBI_NO_SSE #include "stb_image.h"检查编译选项是否意外开启优化
GCC在-O0(默认Debug模式)下不会定义__OPTIMIZE__,但如果你的编译脚本或VS Code配置中不小心加入了-O1/-O2等优化选项,就会触发这个宏。可以通过以下方式确认:- 查看项目的编译命令,确保Debug模式使用
-O0参数; - 执行预处理命令
gcc -E your_source_file.c -o preprocessed.i,搜索__OPTIMIZE__,看是否被定义。
- 查看项目的编译命令,确保Debug模式使用
升级stb到最新版本
这个问题可能是旧版stb与GCC 12.x的兼容性bug,替换项目中的stb头文件为最新版本,大概率能解决宏判断或指令兼容的问题。
内容的提问来源于stack exchange,提问作者JacobDev
相关产品推荐
相关产品推荐

