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.

[参考译文] 编译器/TMS320C6748:使用CCSv7重建DSP67x.lib

Guru**** 2539500 points
Other Parts Discussed in Thread: CCSTUDIO

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/574440/compiler-tms320c6748-dsp67x-lib-rebuild-using-ccsv7

部件号:TMS320C6748
主题中讨论的其他部件:CCStudio

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

DSP67x.lib已从TI网站下载,但此预构建库采用COFF格式。

我想以EABI格式重建库DSP67x.lib。

在2.3 部分的“TMS320C67x DSP库程序员参考指南”中,重建的说明如下:

2.3 如何重建DSPLIB
如果您要重建DSPLIB (例如,因为您修改了
源文件),则必须将mk6x实用程序用作
如下:
mk6x dsp67x.src−l dsp67x.lib

我的重建命令行是:

mk6x.exe "C:\CCStudio\c6700\DSPLIB\lib\dsp67x.src"-l "C:\CCStudio\c6700\DSPLIB\lib\dsp67x.lib"-mv6740 --abi=eabi

库文件已成功重建,但编译器拒绝--abi=eabi运行时选项。

如何使其接受此选项进行重建?

是否可以使用CCSv7将dsp67x.src重建为dsp67x.lib?  即输出结果是否正确?

John

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

    稍后编辑此帖子...  请忽略此帖子。  没错。  它仍然在这里,所以整个线程仍然有意义。  -George

    我的建议有点不好。  但我认为在这种情况下,这是最好的选择。

    在运行mk6x命令之前。  添加此环境变量设置:

    >>>设置C6x_C_OPTION=--ABI=eabi 

    这是向编译器shell cl6x通知生成选项的另一种方法。  

    库构建实用程序mk6x正在逐步淘汰。  它不是最新编译器发行版的一部分。  这就是为什么没有向其添加EABI支持的原因。

    谢谢,此致,

    -George

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

    George,

    感谢您的回复。  我已包含C6x_C_OPTION环境变量,但输出文件dsp67x.lib仍显示为COFF。

    设置C6x_C_OPTION=--ABI=eabi
    mk6x.exe "C:\CCStudio\c6700\DSPLIB\lib\dsp67x.src"-l "C:\CCStudio\c6700\DSPLIB\lib\dsp67x.lib"-c -mv6740

    我确定它是COFF或EABI的唯一方法是将其包含在我正在构建的应用程序的链接中。  

    我已复选- dsp67x.lib确实已更新,并且具有时间戳2017年02月14日 5:14PM,并且路径设置适用于该版本。

    这是来自内部版本的警告语句。

    '构建目标:Ferra_SBC6748.out '
    '调用:C6000链接器'
    “c:\ti/ccsv7/tools/compiler/ti-CGT-C6000_CCS.3/bin/cl6x 8.1 ”-mv6740 --abi=eabi -g --define=C6748 --diag_wrap=off --diag_warning=225 8.1 CCS --display_error_number --printf_support=f-z -m"gt_6748_grav_c_堆栈-3/c3/c3/c"-grt_crm/ccti_c03_c00_crs/cr/crs/crs/crs/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/cr/crs/-/ 8.1
    链接>
    警告#1.0373万-D:库“C:\CCStudio/c6700/DSPLIB/lib/dsp67x.lib”包含TI-COFF对象文件,这些文件与ELF输出文件不兼容。  确保使用正确的库。
    警告#1.0373万-D:库“C:\CCStudio/c6700/DSPLIB/lib/dsp67x.lib”包含TI-COFF对象文件,这些文件与ELF输出文件不兼容。  确保使用正确的库。
    警告#1.0373万-D:库“C:\CCStudio/c6700/DSPLIB/lib/dsp67x.lib”包含TI-COFF对象文件,这些文件与ELF输出文件不兼容。  确保使用正确的库。
    '完成构建目标:Ferra_SBC6748.out '
    ''

    ****构建已完成****

    是否有其他方法可以确定dsp67x.lib文件的coff/eabi格式?

    是否可以删除 dsp67x.src文件顶部的构建选项/说明:

    !<arch><filenames>/   0.10303682亿                             `DSPF_sp_autocor.ASM/DSPF_sp_bitrev_cp ..........

    将源代码编译为目标文件?

    如果是,文件的扩展名应该是".ASM"吗?

    感谢您的帮助,

    John

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

    很抱歉。  我建议使用C6x_C_OPTION的建议不起作用。  

    剩下的唯一解决方案是手动生成库。  以下是基本步骤。  您可能需要对它们进行一些更改。

    熟悉存档器工具ar6x。  C6000 汇编语言工具手册中对此进行了说明。  查找标题为Archiver Description (存档程序说明)的章节。  

    步骤1:创建新目录。  所有其余命令都将出现在此新目录中。

    步骤2:从源库中提取所有源代码。

    >>> ar6x -x C:\CCStudio\c6700\DSPLIB\lib\dsp67x.src. 

    步骤3:生成每个源文件。  在最后一步之后,我将更详细地介绍这一点。

    步骤4:创建由刚构建的目标文件组成的库。

    >>> ar6x -r C:\CCStudio\c6700\DSPLIB\lib\dsp67x.lib file1.obj file2.obj ... 

    现有的mk6x实用程序可以显示用于生成源文件的命令。  像以前一样运行它,但添加选项--v (用于verbose)。  cl6x命令是步骤3所需的命令。  除外--abi=eabi必须添加到每个。

    您可能应该在脚本(或批处理文件)中捕获所有这些步骤,然后运行它。

    我确定它是COFF还是EABI的唯一方法是将其包含在我正在构建的应用程序的链接中。  [/引述]

    有一种更直接的方法。  使用目标文件显示实用程序ofd6x。  前面提到的C6000装配工具手册中也对此进行了说明。  下面是在EABI C6x RTS库上运行它的外观...

    >>ofd6x C:\ti\ccsv6\tools\compiler\c6000_Object.23\lib\rts6600_elf.lib<xmt-block0>6600
    
    7.3 archive:C:\ti\ccsv6\tools\compiler\C6000_Object.23\lib\rts6600_elf.lib<xmt-block1>6600
    
    7.3 目标文件:_bufread.obj
    
    对象文件信息
    
    文件名: _bufread.obj
    格式: ELF版本1
    文件类型: 可重定位文件
    机器: TI C6x...
    

    格式行显示目标文件格式。  当您看到ELF时,这意味着EABI。

    谢谢,此致,

    -George

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

    感谢您提供有关如何提取源代码以及如何使用EABI选项集重建库的说明。
    作为一项测试,我能够从库中提取其中一个函数,然后使用EABI选项构建它。
    重建的EABI格式文件现在可以正确链接。
    感谢你的帮助。
    此致,
    John