编译NIOS2出现如下错误提示:make:***[**.mk] Error 1 或者 make: *** [**.elf] Error 1

本文针对QuartusII和NIOS2在WIN7环境下编译时出现的make:***[**.mk]Error1或make:***[**.elf]Error1错误,提供了详细的解决方案。主要涉及调整BSP设置、更改兼容模式及优化内存配置等方面。
AI助手已提取文章相关产品:

我的系统是WIN7,QuartusII和NIOS2的版本都是10.0,按照特权同学的《特权和你一起学NIOS2--第三章 流程实践案例——手把手第一个工程》操作,前面都很顺利,后来在Eclipse里建好了软件工程之后,编译(Build Project),出现如下错误提示:make:***[**.mk] Error 1 或者  make: *** [**.elf] Error 1。

看了很多论坛,很多网友都提了自己的解决思路,归纳起来,大概有几种解决办法:
(1)、Regenerate the BSP to update the Makefile, and then build again. To regenerate from Eclipse: 1. Right-click the BSP project. 2. In the Nios II Menu, click Generate BSP.
(2)、Here is the list of files that you can select to change their compatibility mode under the Quartus II->bin->cygwin->bin folder: 

    1. Make.exe 
    2. Sh.exe 
    3. Echo.exe 
    4. Cygstart.exe 
    5. MakeInfo.exe 
    6. Perl.exe 
    7. Collect2.exe (under nios2eds\bin\nios2-gnutools\ H-i686-pc-cygwin\libexec\gcc\nios2-elf\3.4.6) 
    8. Nios2-elf-g++.exe (under nios2eds\bin\nios2-gnutools\ H-i686-pc-cygwin\bin)

方法就是将上面8个.exe文件改成XP兼容模式。
(3)、两个问题,第一,clean project;  第二,由于我用的onchip memory,修改system library,需要去掉suppt c++。
(4)、Your on-chip memory is too small. It looks like you'll need 64K. Make your on-chip memory bigger, or try to shrink the size of your code (use smallc library, etc.)

解决办法(1)和(2)我反复试验了,没有用。(3)和(4)只是提出了一个思路,没有指出具体的操作步骤,但是,仔细分析,你会发现他们其实说的是一个意思,就是FPGA的片上memory太小,存储空间不够。再反过头来看特权同学的pdf教程,有这么一段描述:

七、设置软件编译属性

由于正常的工程模板软件C代码量比较大,而我们所分配的可用片内存储器(onchip_mem)容量也不大(12KBytes),因此需要在软件编译属性里做一些简单的设置,以裁剪代码量,否则编译将无法通过。

代码裁剪不是无依据的随便设置,在官方的edh_ed_handbook.pdf.Section II.3.Debugging Nios II Designs.Reducing Code Size一节有所描述。因此,根据文档中推荐的消减代码需要做如下设置。

看完这个,不禁豁然开朗。设置步骤如下:设置Eclipse里面的菜单NiosII / BSP Editor ,选择当前BSP工程(如图1所示)后确定,出现如图2所示的对话框,按照上面的表格设置相关参数,保存并点击右下角的“Generate”,完成后退出即可。

图1

注意上图:要check两个enable box


图2

上面的设置顺利完成之后,再Build Project,就OK啦。成功之后,Console栏会出现很多message,其中有两行是:

Info: (first2_swprj.elf) 5152 Bytes program size (code + initialized data).

Info:                    6896 Bytes free for stack + heap.
这就是memory的使用情况。


您可能感兴趣的与本文相关内容

<think>嗯,用户这次询问的是关于解决'make: *** [Makefile:708:.config.mk] 错误 1'的方法。这个问题属于编译过程中的Makefile错误,需要系统性地排查。 从用户提供的引用资料来看,这类错误通常有几个关键方向需要排查: 1. 路径问题:引用[1]提到的"No such file or directory"和引用[4]提到的路径兼容性问题都指向文件路径缺失或格式错误。需要检查Makefile第708行涉及的.config.mk路径是否存在,特别要注意相对路径的基准目录是否正确。 2. 格式错误:引用[3]强调的"missing separator"提醒我们要检查Makefile的语法,尤其是第708行附近的缩进和分隔符。Makefile要求命令必须以Tab开头而非空格。 3. 依赖缺失:引用[2][5]的案例表明,可能是.config.mk依赖的前置条件未满足。需要确认configure或autoconf是否执行成功,是否生成了必要的配置文件。 4. 权限问题:虽然未在引用中直接体现,但经验表明目录写入权限不足也会导致此类错误。 用户没有给出具体的编译环境,考虑到引用[4]提到了Windows下的兼容模式和引用[5]涉及Linux64位系统,可能需要区分两种情况给出建议。不过核心排查步骤是相通的,应该先聚焦在通用的Makefile调试方法上。 注意到用户之前提供的引用都是碎片化的错误信息,说明ta可能已经在网上尝试搜索过。因此回复时要避免泛泛而谈,重点给出可操作的诊断步骤,比如通过make -n调试、检查日志等具体方法。特别要提示查看错误发生前的详细输出,因为真正的错误原因往往在最后一行报错之前。 另外,引用[4]提到的BSP重新生成方案值得参考,但需要根据用户实际项目类型调整建议。如果用户是在编译嵌入式系统(如引用中的NIOS2),可能需要额外的SDK环境检查。 </think>针对 `make: *** [Makefile:708:.config.mk] 错误 1` 的问题,以下是系统性的排查和解决方法(按优先级排序): ### 一、核心排查步骤 1. **查看完整错误日志** 运行编译命令时添加 `V=1` 或 `VERBOSE=1`(如 `make V=1`),定位错误前的**最后一条实际报错信息**。例如: ```bash make V=1 | grep -C 5 "Makefile:708" ``` 2. **检查文件路径(最常见原因)** - 确认 `Makefile` 第708行引用的 `.config.mk` 是否存在: ```bash ls -l $(sed -n '708p' Makefile | grep -oP '\.config\.mk\b') ``` - 验证路径格式(特别注意 **Windows/Linux 路径分隔符差异**)[^1][^4] 3. **检查Makefile语法** 聚焦第708行及附近代码: - **缺失Tab缩进**Makefile命令必须以`Tab`开头(非空格)[^3] - **变量未定义**:检查 `${CONFIG_PATH}` 等变量是否赋值 - **特殊字符转义**:如 `$`、`#` 需写为 `$$`、`\#` ### 二、针对性解决方案 | **问题类型** | **解决方法** | |---------------------|-----------------------------------------------------------------------------| | **文件缺失** | 1. 手动创建空文件:`touch .config.mk`<br>2. 重新运行 `configure` 脚本生成配置文件 | | **权限问题** | `chmod +x configure` 后重新执行配置 | | **依赖未安装** | 1. 检查 `config.log`<br>2. 安装缺失工具链(如 autoconf, automake, libtool) | | **环境变量错误** | 执行 `export | grep CONFIG` 检查相关变量是否被覆盖 | | **跨平台兼容问题** | 如果是Windows编译:<br>- 使用管理员权限运行<br>- 设置兼容模式(参考[^4]) | ### 三、高级调试方法 ```bash # 1. 打印Makefile执行流 make -n --debug=v 2>&1 | tee make.log # 2. 定位.config.mk生成规则(通常在configure.ac或Makefile.am中) grep -r "\.config\.mk" . # 3. 检查GCC版本兼容性(若涉及C/C++编译) gcc -v && make --version ``` > **关键提示**:90%的此类错误源于**配置文件生成失败**。若上述步骤无效,尝试: > ```bash > make distclean # 彻底清理 > ./configure --help | grep -i config # 查看配置选项 > ./configure --enable-debug # 重新配置(根据项目调整参数) > make V=1 > ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值