Arch Linux下用MinGW交叉编译gdb出现头文件缺失及依赖报错如何解决
交叉编译GDB问题解决方案
编译时缺失srchilite头文件报错处理
该报错是GDB的源代码高亮功能依赖libsource-highlight库,你当前的MinGW环境没有安装对应目标架构的该依赖库,可以直接禁用该功能跳过依赖检查,修改configure命令添加--disable-source-highlight参数即可,无需额外安装依赖。
gdbserver运行时缺失dll报错处理
该问题确实是默认动态链接导致的:MinGW编译的程序默认会动态链接libgcc、libstdc++运行库,运行环境未部署对应32位dll时就会触发报错,有两种解决方式:
- 静态链接生成独立exe:编译时添加静态链接参数,完整configure命令如下:
按上述命令重新配置后再执行make,生成的exe不依赖外部运行时dll,可直接运行。./configure --host=i686-w64-mingw32 --disable-source-highlight LDFLAGS="-static -static-libgcc -static-libstdc++" - 部署对应dll:将MinGW安装目录下的32位版本
libgcc_s_dw2-1.dll、libstdc++-6.dll复制到gdbserver.exe同目录,即可正常启动。
额外优化建议
如果你只需要使用gdbserver,不需要完整的Windows端gdb程序,可以进入源码目录下的gdbserver子目录单独执行configure、make操作,不需要编译整个GDB项目,编译速度更快,也不会触发source-highlight的依赖检查。
内容的提问来源于stack exchange,提问作者Udalny
相关产品推荐
相关产品推荐

