UBUNTU VS C++ 调试报错Unable to open ‘libc-start.c‘: File not found.

UBUNTU VS C++ 调试报错Unable to open 'libc-start.c': File not found.

点击创建文件继续报错

Unable to write file '/build/glibc-sMfBJT/glibc-2.31/csu/libc-start.c' (NoPermissions (FileSystemError): Error: EACCES: permission denied, mkdir '/build')

解决办法

只需要创建文件夹以及该文件即可

输入密码后递归创建缺失的各层文件夹(加粗字体部分需要替换为出错的具体信息, 我这里是 glibc-YYA7BZ/glibc-2.31)

​ sudo mkdir -p /build/glibc-sMfBJT/glibc-2.31/csu

进入路径下

​ cd /build/glibc-sMfBJT/glibc-2.31/csu

创建缺失的文件

sudo touch libc-start.c

问题解决,程序执行完成后不弹出右下角的报错对话框,程序终端的最后一行输出

[1] + Done                       "/usr/bin/gdb" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-yg21ymui.2v1" 1>"/tmp/Microsoft-MIEngine-Out-02nx30j4.j5z"

没有异常标志


参考

https://blog.youkuaiyun.com/qq_34739395/article/details/108681428

在编译 C/C++ 程序时,遇到 `fatal error: bits/libc-header-start.h: No such file or directory` 错误通常表示编译器无法找到标准 C 库(glibc)相关的内部头文件。这个文件 `libc-header-start.h` 是 GNU C 库的一部分,通常由 `glibc` 或 `glibc-devel` 提供,并且在正常的 Linux 系统中位于 `/usr/include/bits/` 目录下。 ### 常见原因及解决方法 1. **缺少 glibc 开发包** 在基于 RPM 的系统(如 Fedora、CentOS、RHEL)上,标准 C 库的头文件通常包含在 `glibc-devel` 或 `glibc-headers` 包中。如果这些包未安装,编译器将无法找到相关头文件。 可以通过以下命令安装: ```bash sudo dnf install glibc-devel ``` 在基于 Debian 的系统(如 Ubuntu)上,可以使用: ```bash sudo apt install libc6-dev ``` 2. **交叉编译环境配置错误** 如果正在使用交叉编译工具链,标准头文件可能不会默认安装在标准路径下。根据引用内容,非本地目标(non-native target)的头文件通常位于 `/usr/target/include/` 路径下[^1]。需要确认编译器的 `-I` 选项是否指向正确的头文件路径。 3. **多版本 GCC 共存问题** 如果系统中安装了多个版本的 GCC,可能会导致头文件路径混乱。某些情况下,标准头文件可能被安装在 `/usr/target/include/` 而不是 `/usr/include/` 中[^1]。可以通过检查 `/usr/include/bits/` 是否存在 `libc-header-start.h` 文件来确认。 4. **手动指定头文件路径** 如果确认头文件存在于特定路径(例如交叉编译工具链的安装目录),可以在编译时通过 `-I` 选项指定头文件搜索路径,例如: ```bash gcc -I/usr/arm-linux-gnueabi/include/ your_program.c ``` 5. **修复损坏的系统头文件** 如果系统头文件损坏或被误删,可以尝试重新安装 glibc 相关组件。在基于 Debian 的系统上,可以运行: ```bash sudo apt reinstall libc6-dev ``` 在基于 RPM 的系统上,可以运行: ```bash sudo dnf reinstall glibc-devel ``` 6. **检查编译器路径和环境变量** 确保使用的 `gcc` 或 `clang` 命令指向正确的编译器版本,并且环境变量(如 `CPATH`、`C_INCLUDE_PATH`)未覆盖默认的头文件搜索路径。 --- ### 示例:确认头文件是否存在 ```bash ls /usr/include/bits/libc-header-start.h ``` 如果该文件不存在,说明标准 C 库的开发包未正确安装。 --- ### 示例:使用交叉编译器时指定头文件路径 ```bash arm-linux-gnueabi-gcc -I/usr/arm-linux-gnueabi/include/ -o myapp myapp.c ``` --- ### 相关建议 - 如果使用了自定义的构建系统或 Makefile,确保头文件路径配置正确。 - 对于容器或嵌入式环境,可能需要手动安装 glibc 开发文件或使用特定的 SDK。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值