解决编译安装gdb-10.1 unistd.h:663:3: error: #error “Please include config.h first.“ 问题

​        最近在Arch中安装C++编译环境,本以为直接 pacman -S cmake gdb 就能解决,结果在clion中配置环境时竟然提示cmake和gdb版本过高,只好去cmake和gdb官网下载了,cmake官网提供了二进制文件,找个目录解压一下即可直接调用。而gdb则需要自己编译了,这里选择的是gdb-10.1。

​        照例一通 ./configuremakemake install时,编译出错......

  CXX    nat/amd64-linux-siginfo.o
In file included from /usr/include/bits/sigstksz.h:24,
                 from /usr/include/signal.h:315,
                 from ../gnulib/import/signal.h:52,
                 from /ironwood1/sourceware-git/rawhide-gnulib/bld/../../worktree-gnulib/gdbserver/../gdb/nat/amd64-linux-siginfo.c:20:
../gnulib/import/unistd.h:663:3: error: #error "Please include config.h first."
  663 |  #error "Please include config.h first."
      |   ^~~~~

​        原因是因为glic-2.33引入的头文件发生变化,要解决这个问题,只需要打开 ./gdb-10.1/gdb/nat/amd64-linux-siginfo.c ,将

#include <signal.h>
#include "gdbsupport/common-defs.h"

​        修改为

#include "gdbsupport/common-defs.h"
#include <signal.h>

         重新编译安装,问题解决。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个警告是由于 GDB 在使用索引缓存目录时无法确定路径导致的。索引缓存目录用于存储 GDB 索引信息,提高调试时的响应速度。如果无法确定索引缓存目录的路径,GDB 仍然可以正常工作,但可能会影响调试的性能。 要解决这个警告,可以手动设置索引缓存目录的路径。具体的方法如下: 1. 打开 VS Code,选择菜单栏中的“文件” > “首选项” > “设置”。 2. 在搜索框中输入“cortex-debug.gdbPath”。 3. 单击“编辑 in settings.json”,打开设置文件。 4. 在 settings.json 文件中添加以下配置: ``` "cortex-debug.armToolchainPath": "<path-to-your-toolchain>", "cortex-debug.gdbPath": "<path-to-your-gdb>", "cortex-debug.gdbInit": [ "set substitute-path /path/on/host /path/on/target" ], ``` 其中,<path-to-your-toolchain> 表示你的工具链路径;<path-to-your-gdb> 表示你的 GDB 路径。 5. 保存并关闭 settings.json 文件。 6. 重新打开 VS Code,尝试使用 cortex-debug 插件进行调试,警告信息应该已经消失了。 需要注意的是,GDB 索引缓存目录的路径必须是可写的,否则 GDB 无法在该目录下创建索引缓存文件。如果你使用的是 Windows 系统,建议将索引缓存目录设置为 C 盘根目录下的一个目录,例如 C:\GDBIndexCache。如果你使用的是 Linux 或 macOS 系统,可以将索引缓存目录设置为你的 HOME 目录下的一个目录,例如 ~/GDBIndexCache。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值