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.

[参考译文] 编译器/TMS320C6678:构建libc.a归档文件时出现问题

Guru**** 2606725 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/630108/compiler-tms320c6678-problems-building-libc-a-archive

部件号:TMS320C6678

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

你好
作为引入soem divide by zero变通办法的一部分,我们希望编译"libc.a"档案,但在编译过程中我们遇到了一些问题。

我们使用了有关MKlib可执行文件(http://processors.wiki.ti.com/index.php/Mklib)的逐步指导,但经过多次尝试后,我们无法编译任何属于“libc.a”的libs。

 

请您就此向我们提供支持吗?

 

 此致

Bob Bacon

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

    请了解libc.a不是对象库或源代码库。  它是一个索引库。  索引库是多个对象文件库变体的集合,当具有不同选项的库的多个变体可用时,该库非常有用。  它是使用库信息归档程序libinfo6x创建的。  请在  C6000汇编语言工具手册中标题为"库信息存档器描述"的章节中阅读更多信息。

    如果这不能澄清问题,请举例说明您的尝试。  通过copy-n-paste,显示准确的命令以及所有生成的诊断程序。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    George,您好,我必须重新编译libc.a索引中包含的库,因为src文件夹(包含在CGT编译器lib中)中的某些文件已更改。
    阅读 processors.wiki.ti.com/.../Mklib中的疑难解答 页面时,我发现当*。lib从lib文件夹中删除时,编译器会尝试生成新的*。lib存档,添加src文件夹中包含的新文件。 我尝试删除*.lib库,并在CCS IDE中创建了SYS/BIOS项目;第一步是链接libc.a索引库并编译项目... 编译器找不到指定的库(*.lib as rts6600_elf.lib),并且使用CGT编译器中的gmake尝试重新生成,但出现了一些错误(CHE编译器似乎与库不兼容)。 我还尝试编译一个库

    mklib.exe --pattern=rtd6600_elf.lib --gmake = ccsv7\utils\bin\gmake

    但不管用。

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

    请告诉我有关您的主机环境的更多信息。  Windows还是Linux?  您是否从CCS内部构建?  还是在命令行上?

    什么版本的编译器?

    请显示对该mklib命令的所有系统响应。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,George,
    我的编译器是CCS 8.1 7.2 上的TI-CGT-C6000_IDETm3。 我正在使用Windows来生成新库,这是CCS控制台生成的输出(在我尝试以lo启动手动命令时相同):

    >>错误:mklib: gmake error during rts6600_elf.lib buil
    警告#1.0207万-D:自动RTS选择:将索引库"libc.a"解析为"rts6600_elf.lib",但未找到"rts6600_elf.lib"
    错误#1.0198万-D:未链接任何输入部分
    警告#1.0062万-D:未定义入口点符号"_c_int00"
    警告#1.0202万-D:未找到合适的入口点;设置为0

    内部错误:8.1 C:\ti_ccs7_2\ti-CGT-C6000_CCES.3\bin\lnk6x.exe遇到未处理的异常

    这是由编译器本身的缺陷引起的。 TI客户
    支持人员可能会建议一种解决方法来避免这种情况。

    升级到最新版本的编译器可以解决此问题。

    在E2E支持论坛中联系TI,网址 为http://e2e.ti.com
    “开发工具”,“TI C/C++编译器”。 请参阅标题为的链接
    "提交问题"。 包括整个错误消息和
    选项--preproc_with注释时创建的.pp文件的副本
    (-PPC)。

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

    好的,这里发生了两个明显的错误:

    1. 库无法构建(以“错误:mklib: gmake error during ... Build”为证明)
    2. 链接器出现内部错误

    在我们获得完整,可重现的测试案例之前,我们无法解决2号问题,因此我们来解决1号问题

    您只提供了构建日志的最后一位。  日志中前面一定有另一条错误消息。  请将整个生成控制台附加到此线程,以便我们可以检查错误。

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

    e2e.ti.com/.../console.logHi考古学家,

    在"附加"中,此处是请求的日志。

    谢谢,此致,

    Vittorio

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

    第一个错误以及所有其他错误的原因是""['未被识别为内部或外部命令"

    mklib使用gmake构建库。 gmake调用sh.exe。  '['是sh.exe内置。  因此,如果不能识别'[',则表示make进程调用的gmake或sh.exe版本不正确。

    您是否使用Cygwin?  您是否使用MSYS?  您是否在该Windows计算机上使用其他Unix界面提供的实用程序?

    您是否安装了除CCS分发中提供的版本之外的gmake或sh.exe版本?  PATH变量是否将这些其他版本放在CCS中的版本之前?  您需要先找到%CCSROOT%\utils\bin\gmake.exe和%CCSROOT%\utils\cygwin\sh.exe。

    这些内容是否适用于您?

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

    考古学家,您好!

    如前所述,我已强制mklib也在CCS中使用TI编译器(mklib.exe --pattern=rtd6600_elf.lib --gmake =ccsv7\utils\bin\gmake),但它不起作用。

    对此有何建议?

    提前感谢!

    Vittorio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您应该使用gmake的完整路径名,如下所示:--gmake = C:\ti\ccsv7\utils\bin\gmake.exe
    如果已在其他位置安装了ccsv7,则需要相应地调整路径。

    当您说使用--gmake选项指定gmake可执行文件时,“不起作用”,您的确切含义是什么? 您收到的是什么错误消息?

    我还需要知道您是否使用Cywgin,MSYS,SFU或MKS
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经使用了--gmake的完整路径C:\ti\ccsv7\utils\bin\gmake.exe (我的ccs7文件夹类似于包含完整TI文件夹安装的前缀),但我遇到了相同的错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好,
    我们从一个全新的环境开始,将所有步骤(在主题中描述)置于脚本中,使流程自动化。

    以下是批处理脚本:

    REM使用TI安装
    设置TI_INSTALL_DIR=C:\tI_ccs7_2
    SET CCS_INSTALL_DIR=%TI_INSTALL_REM%\csv7
    SET TI_CGT_DIR=TI-CGT-C6000_CCMI_DIR_DIR_DIR=3 8.1
    SET TI_CGT_MI_DIR_CIM_ST_DIR_DIR_DIR%32%ST_ST_DIR_DIR_DIR_DIR_DIR_DIR_ST_DIR_DIR_DIR_DIR_DIR_DIR_DIR_ST_ST_DIR_ST_ST_DI_IN_ST_ST_ST_IN_ST_DI_DI_INTOOL3%32%ST_IN_IN_ST_IN_IN_IN_ST_IN_DI_IN_IN_DI_DI_INTOOL_IN_IN_ST_IN_ST_DI_IN_IN_INTOOL3%32%32_DI_IN_IN_DI_DI_IN_DI_DI_DI_DI_DI_DI_DI_DI_DI_DI_DI_DI_DIR_DIR_DI 8.1
    
    
    
    
    
    
    
    
    
    mklib.exe 

    程序成功。 在我们的环境中,CCS编译器不包括在我们的路径中。


    提前感谢!
    Vittorio

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

    我很高兴找到了。  我怀疑问题出在您的道路上。  完全从头开始指定路径可以避免这种情况。

    我希望定义TI_CGT_LIB_DIR ...

    设置TI_CGT_LIB_DIR=%CCS_INSTALL_DIR%\tools\compiler\%TI_CGT_DIR%\lib 

    否则看起来不错。

    谢谢,此致,

    -George