2018.1.7学习日志gcc

本文介绍了C语言编程中的一些实用技巧,包括主函数参数的理解、格式化输入输出的方法、编译选项如-Wall警告、time运行时间显示、-O代码优化、-g调试选项等,同时还提到了库文件的基本概念及其加载顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主函数参数:

argc为统计argv[]传入个数

%[^;]读取不是分号前不是分号的字符




-Wall不规范警告


time 显示运行时间

-O 优化代码

-g调试

Gdb进入调试




静态库文件前三个字母默认lib

动态库优先

动态库复制到lib文件夹(64位为lib64)才能运行



<think>好的,用户现在遇到了在Vivado 2018.3 SDK调试时提示main.c找不到的问题。我需要仔细分析可能的原因和解决方法。 首先,用户使用的工具版本是Vivado 2018.3,这个版本相对较旧,可能存在一些已知的问题或者配置上的差异。接下来,问题出现在调试过程中,提示找不到main.c文件。这种情况通常与工程配置或路径设置有关。 可能的原因有几个方面:首先是工程中main.c文件是否真的存在。用户可能在创建工程时没有正确添加源文件,或者文件被误删、移动了位置。需要检查工程目录下的src或source文件夹,确认main.c是否存在。 其次,工程属性中的路径设置是否正确。如果main.c所在的目录没有被包含在工程的包含路径中,SDK在调试时可能无法定位到该文件。需要检查C/C++ Build的路径设置,确保源文件目录被正确添加。 另外,调试配置的问题也可能导致此错误。用户可能在配置调试会话时没有正确指定源文件的位置,或者在构建配置中选择了错误的配置(如Debug和Release的区别)。需要检查调试配置中的源路径是否正确,并重新生成启动文件。 还有可能是Vivado工程和SDK工程之间的同步问题。如果硬件平台发生变化后,没有正确导出到SDK,或者SDK工程没有更新,可能导致路径不一致。此时需要重新导出硬件平台并更新SDK工程。 此外,工作空间或路径中的特殊字符也可能引发问题。如果工程路径包含空格或中文字符,SDK可能无法正确解析路径,导致文件找不到的错误。建议将工程移动到简单路径下,避免使用特殊字符。 缓存或索引损坏也是一个可能性。SDK可能缓存了旧的工程信息,导致无法识别新添加的文件。清理工程并重建,或者刷新工作空间,可能解决这个问题。 最后,软件版本本身的bug也可能导致此类问题。Vivado 2018.3可能存在已知的bug,需要检查Xilinx的更新和补丁,或者考虑升级到更新的版本。 在解决步骤方面,用户应该按照以下顺序排查:首先确认文件是否存在,检查工程配置中的路径,清理和重建工程,检查调试配置,处理路径特殊字符,最后考虑软件更新。如果问题依旧,可能需要导出硬件平台并重新创建SDK工程。 需要确保用户按照步骤操作,并理解每个步骤的目的。同时,用户可能需要提供更多信息,比如具体的错误日志或工程结构,以便进一步诊断问题。如果用户不太熟悉某些操作,比如修改工程属性或清理项目,需要给出详细的指导,避免操作失误。</think>在Vivado 2018.3 SDK调试过程中出现"main.c not found"错误,通常由以下原因及解决方案构成: $$Error\ Flow: \text{路径配置异常} \rightarrow \text{调试器映射失效} \rightarrow \text{源代码不可见}$$ **一、核心修复步骤** 1. **工程属性验证** ```bash # 在SDK工程右键 > C/C++ Build > Settings # 确认以下路径: Tool Settings -> ARM v7 gcc compiler -> Includes (-I) ARM v7 gcc linker -> Libraries (-l) ``` ![工程属性路径配置示意图] 2. **调试配置重置** - 删除现有调试配置(Run > Debug Configurations) - 重新生成启动文件: ```tcl # 在Xilinx Tools菜单执行 Generate Linker Script -> 确认.text段地址与硬件匹配 ``` **二、典型场景解决方案** | 故障类型 | 检测方法 | 修复指令 | |---------|---------|---------| | 绝对路径绑定 | 查看`.cproject`文件内`<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>` | 修改为`kind="inc" path="src"` | | 符号链接断裂 | 在SDK终端执行`ls -l src/main.c` | 重新建立链接:`ln -sf /实际路径/main.c src/` | | ELF文件异常 | 检查`Debug/objects.map`中`.text`段地址 | 执行`clean all`后完整rebuild | **三、硬件关联验证** 1. 确认FSBL调试地址: ```c // 在fsbl_debug.h中验证 #define FSBL_DEBUG_ADDR 0x40000000 // 需与Zynq PS DDR配置一致 ``` 2. 执行硬件描述文件同步: ```tcl # 在Vivado Tcl控制台 write_hw_platform -fixed -include_bit -force system.xsa ``` **四、高级调试技巧** 1. **强制源码定位**: ```gdb (gdb) directory /完整路径/to/src (gdb) list main ``` 2. **二进制反汇编验证**: ```bash arm-none-eabi-objdump -d Debug/project.elf | grep "_main" ``` **版本特异性处理**(针对Vivado 2018.3): - 禁用自动路径解析: ```xml <!-- 修改.settings/org.eclipse.cdt.core.prefs --> C_CORE/autoResolvePaths=false ``` - 应用官方补丁: ```text AR# 68546: 修复2018.3版本SDK调试路径映射缺陷 ``` 建议操作顺序: ```mermaid graph TD A[错误出现] --> B{检查main.c物理存在} B -->|存在| C[验证工程包含路径] B -->|不存在| D[重构工程结构] C --> E[清理并完整重建] E --> F[重新配置调试会话] F --> G[验证ELF文件地址] G --> H[成功调试] ``` 若问题持续存在,请提供: 1. 工程目录树结构(执行`tree /f /a`) 2. `.cproject`文件中`<sourceEntries>`部分内容 3. 调试控制台输出的完整错误日志
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值