This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器:GNU 连接器 makefile 错误

Guru**** 2952510 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/961702/compiler-gnu-linker-makefile-error

工具/软件:TI C/C++编译器

大家好、

 我非常感谢在这方面提供的任何帮助。  请注意、我在编码开发套件、正式编码等方面非常缺乏经验  我在 C 语言编程方面有一些经验(不在大学级别)、但正在 学习汇编语言和微处理器设计。  我无法链接一个简单程序来乘法两个数组并将产品放置在第三个数组中。  我已附加错误日志、我对7个错误中的第一个错误感兴趣。

请参阅随附的.txt 文件、但实质上是:

Makefile:139:目标'multiple-array.out'的配方失败

我使用的硬件/软件为:

主机系统 Apple OX10.14.6 (Mojave)、具有 Oracle VirtualBox 6.1 (添加了扩展包)、托管 Ubuntu 18.04 LTS (最近更新)

TI CCS 版本8.1.3.00004

微处理器:BeagleBone Black 修订版 C

仿真器:Blackhawk XDS100V2-D

我认为程序语法是可以的(如果有用、我也可以提供此语法的副本)

在 Project Explorer 下查找 GNU 链接器时遇到问题、因此在"GNU Build"下输入 了目标代码文件的名称乘法数组.out、将映射文件作为乘法数组.map。  我在链接时看不到不使用标准系统启动文件的方法(-nostartfiles)。

基本上、我正在尝试调试这个程序、希望第一个错误能够正确地帮助"下游"。

我通读了这个论坛、可能错过了这个论坛、但没有看到我能弄清楚如何应用于这种情况的任何东西。  

我尝试安装更新、因为我看到这可以解决 makefile 问题、但出现错误:

***

配置已安装项目时出错
会话上下文为:(profile=EPP.PACKAGE.CPP、phy=org.eclipse.equinox.internal.p2.engine.phases.Configure、操作数=null ->[R]com.ti.targetcontent.zipselector.notmac 1.0.201811251509、action=org.eclipse.equinox.internal.p2.touchpoint.natives.actions.CopyAction)。
复制/home/dojo/ccsv8/eclipse/features/com.ti.targetcontent_1.0.0.201811251509/com.ti.targetcontent.properties 时出现 I/O 错误-请参阅详细信息。
复制时出错:/home/dojo/ccsv8/eclipse/features/com.ti.targetcontent_1.0.0.201811251509/com.ti.targetcontent.properties

***

提前非常感谢、感谢您的帮助。

此致、

Rick

e2e.ti.com/.../multiply_2D00_array_2D00_error.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当您将程序与 GCC ARM 工具链链接时、它会自动链接到名为 crt0.o 的目标文件中  在附加的生成日志文件中,此文件的完整路径为...

    /home/dojo/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7-ar/crt0.o 

    此目标文件包含在系统启动时运行的代码、然后调用 main。 在此目标文件中、在代码开头定义了两个全局符号:_start 和 _mainCRTStartup。  因此、您的程序不能提供包含这些名称之一的函数的实现。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢乔治、我将努力解决这个问题。  这是有道理的。  感谢您抽出宝贵时间。

    Rick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    跟进以及对任何不像我那么喜欢 n00b、但可能遇到类似问题的人-基于上述建议帮助(它链接并编译、现在没有错误):

    1.我尝试删除程序中对'_start'的引用,但在程序中看不到任何对_main 的引用

    *已重新构建、但仍然出现错误

    2.在我的程序中重新放置_start、并在"Show Build Settings"选项下勾选"-nodstartfiles"(这是 GNU 连接器下拉菜单在这个版本的 CCS 中可能存在的地方)

    *重新构建并继续出现错误

    然后关闭另外2个打开的项目、其中包含我已开始尝试成功编译的原始项目"Main_sample";还在创建列表文件时为此项目输入了正确的名称。

    我尚未意识到"MainSample_array"项目实际上位于 Sample 项目的标题下(在 CCS 中作为示例结构提供、因此将列表名称/选项更改为-a=Sample/Main_sample.lst

    *然后重新链接并重新编译、一切正常。

    再次感谢 George。

    R