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.

[参考译文] CCS/TMS570LS3137:致命错误#1.0178万:尝试链接不是为高级RISC机器ARM构建的目标文件

Guru**** 2562960 points
Other Parts Discussed in Thread: TMS570LS3137

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/591614/ccs-tms570ls3137-fatal-error-10178-attempt-to-link-an-object-file-that-is-not-built-for-advanced-risc-machines-arm

部件号:TMS570LS3137

工具/软件:Code Composer Studio

您好,

我们正在将当前项目移植到TMS570LS3137微控制器上。

我们 在TMS570LS3137上构建了一个称为"FWK"的库。 该FWK是一个单独的CCS项目,用于为TMS570LS3137微控制器创建库文件。 创建库时不会给出任何错误。

我们正在将此FWK 库链接到另一个基于TMS570LS3137的CCS项目。 我们将其称为主项目。

当我们使用链接的"FWK"库构建此主项目时,会出现以下错误。

"C:\\ti\\ccsv6\\utils\\bin\\gmake "-j 4 all -O

'正在构建目标:CBK_LAD01_ARM.OUT '

'调用:ARM链接器'

'flags:-mv7R4 --code_warning=225 --display_error_number --abi=eabi --gcc --define=__tms570__--tmswl_wrap=off --diag_warning=225 --display_error_number --abi=eab=eab_type=packed --align_structs=strat_stru_z/rps=3/rack_lip/f_ps/cru_l/cru_z_l/cru_z_z_l/f/cru_z_l/crk/f_l/crk/crk/z_l/z_l/crk/z_l/z_l/f_z_l/f_l/z_l/z_l/f_l/z_l/z_z_l/z_dwk/f_dw_l/f_dwk/z_/cr_/cr_/cr_l/f_l/z_l/w_/cr_/f_l/f_l/cr 15.12 15.12

"C:/ti/ccsv6/tools/compiler/arm_arm.3.LTS/bin/armcl" 15.12 -@"ccsLinker.opt"-o "CBK_LAD01_arm.ut"

链接>

致命错误#1.0178万:尝试链接不是为高级RISC机器ARM构建的对象文件("../FWK/_Deployment/LAD/FWKTMS570xx.lib<comcancrc.o>"= Siemens TriCore嵌入式处理器)

gmake [1]:***[CBK_LAD01_ARM.OUT错误1

>>编译失败

Makefile:399:目标'CBK_LAD01_ARM.OUT的配方失败

gmake:***[All]错误2

Makefile:395:目标'All'的配方失败

它似乎为特定的"comcancrc.o"(并非为ARM构建)的FWK库提供了错误。 但是,当我们为TMS570LS3137创建单独的FWK库时,它不会给出任何错误。

请您帮助我们解决此问题。

我已附加了FWK和主项目的项目属性。

FWK库属性:

主项目属性:

两个项目使用相同的后续CCS版本。

Code Composer Studio

版本:6.2 .0.0.005万

(c)版权所有得克萨斯仪器公司,2014年。 保留所有权利。

请访问http://www.ti.com

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

    Bhusahan

    能否同时重建FWK和主项目,保存 每个项目的生成日志并将其附加到此处?  

    如果您可以为报告错误的特定文件(comcancrc.c和comcancrc.o)附加源文件和目标文件,也会很有帮助。

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

    e2e.ti.com/.../3566.Logs.zip

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

    感谢您的回复。
    请查找所请求的FWK和主项目的上述日志文件,的源文件和对象文件(comcancrc.c和comcancrc.o)。
    如果您需要其他数据,请告诉我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请查找所请求的FWK和主项目的上述日志文件,源文件和目标文件(comcancrc.c和comcancrc.o)。[/QUOT]我使用 了作为TI ARM工具链一部分的armofd.exe程序来查看 comcancrc.o对象文件中的标题信息。 目标文件已正确报告为“高级RISC机器ARM”机器:

    C:\Users\MR_Halfword>\ti_ccs7_1_0\ccsv7\tools\compiler\arm_CACrc.3.LTS\bin\armofd.exe C:\Users\MR_Halfword\workspace_v7\TMS570LS3137_object_format\ComCancrc.obj
    
    目标文件:C:15.12
    
    
    
    文件名: C:\Users\MR_Halfword\workspace_v7\TMS570LS3137_object_format\ComCanCrc.obj
    格式: ELF版本1
    文件类型: 可重定位文件
    机器: 高级RISC机器ARM
    机器端数: 大Endian
    入口点: 0x0万
    供应商: 德州仪器(TI)
    生产商: 汇编程序
    汇编程序版本:15.12 .................................................................3.
    段数:62
    文件长度: 1.5384万
    ELF类: 32位对象
    elf e_flags: 0x500万
    
    <snip>
    
    在".arm.attributes"中生成属性
    
    格式版本:'A'
    
    供应商名称:"TI"(德州仪器(TI))
    
    标记文件:
    属性:
    标记生成方名称 汇编程序
    Tag_Producer_VMajor 16. (生产商主要版本+1)
    Tag_Producer_VMinor 13. (生产商次版本+1)
    Tag_Producer_VPatch 4. (生成方修补程序版本+1)
    标记_ABI 3. (ARM EABI)
    Tag_Isa 10. (ARM v7)
    Tag_VFP_arch 4. (使用了某些VFPv3-D16说明)
    Tag_CPU_arch_profile 82 (实时配置文件)
    Tag_Bitfield_layout 2. (与任何位字段布局兼容)
    Tag_FP_interface 1.
    Tag_arm_Mode 1. (此模式中生成的输入文件数)
    tag_data_syms_exist (存在数据映射符号)
    
    <1>供应商名称:"aeabi"(ARM架构的ABI)
    
    标记文件:
    属性:
    Tag_CPU_arch 10 (ARM v7)
    Tag_CPU_arch_profile 82 (实时配置文件)
    tag_arm_isa_use 1 (使用了某些ARM说明)
    Tag_VFP_arch 4 (使用了某些VFPv3-D16指令)
    Tag_PCS_config 1 (裸平台配置)
    Tag_abI_PCS_wchar_t 2 (wchar_t的大小为2)
    Tag_abI_FP_number_model 1 (仅使用IEEE 754格式的FP编号)
    Tag_abI_align_needed 1 (需要8字节数据的8字节对齐)
    Tag_abI_align_preserved 1 (保留所有所需的8字节对齐,叶功能中的SP除外)
    tag_abI_enum大小 1 (枚举值占用大小足以容纳所有值的最小容器)
    Tag_ABI _HardFP_Use 3 (SP和DP操作使用VFP指令)
    Tag_abI_VFP_args 1 (使用AAPCS的VFP寄存器参数变量传递FP参数)
    Tag_abI_optimization_goals 5 (优化以实现良好的调试,但保留速度和小尺寸)
    Tag_CPU_unaligned_access 1 (允许不对齐的数据访问)
    

    我还尝试 使用TI ARM 15.12 v.3.LTS链接器链接您的comcancrc.o目标文件,该链接器与您使用的版本相同。 链接程序报告了未定义的符号错误,这是预料之中的,因为我只尝试链接一个目标文件,而不是整个库:

    tmslker'"C
    :/ti_ccs7_1_0/ccsv7/tools/compiler/arm_ts.3.ls/bin/armcl" 15.12 -mv7R4 --code_state=32 --float_support=vFPv3D16 -g --diag_wrap=off --diag_warning=225 --display_strap_l_ling=-scap_line_3cru_-sp_--rab_--3span_l_--rabi_gu_lin_-----3crabi_-----scrabi_------3crabi_lip_gu_l_-----------scrabi_lip_l_----------rabi_gi_l_----------3crab_gi_l_--------------scrabi_gi_gi_lip_----- 15.12 15.12
    
    创建不带节规范
    
    的输出节".text"警告#1.0247万-D:创建不带节规范的输出节".data"规范
    >>编译失败
    makefile:141:目标'TMS570LS3137_OBJECT_FORMATE.OUT'的配方失败
    警告#1.0247万-D:创建没有未
    
    定义节规范的输出节".cinit" 第一参考
    符号 在文件中
    ------------------- --------
    s16CoError_MostSevere../ComCanCrc.obj
    s16ComUtilCrc8_Calc ../ComCanCrc.obj
    s16ComUtilCrc8_Check ../ComCanCrc.obj 

    因此,使用提供 的ComCanCrc.obj对象文件无法重复链接器错误,即对象文件是为“Siemens TriCore嵌入式处理器”机器编译的。

    您是否可以尝试在  FWKTMS570xx.lib库文件上运行armofd程序,并检查 ComCanCrc.obj对象文件的对象文件信息中报告了什么“机器”?

    我怀疑您在TI ARM链接器和/或库管理员中发现了错误。

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

    Bhushan,

    如Chester所指出,您附加的ComCanCrc.obj文件将正确签出为ARM对象文件。 我同意Chester的意见,您应该尝试在FWKTMS570xx.lib文件上运行armofd程序,并查看它为该目标文件报告的内容。 您只需按以下格式运行命令:armofd -g FWKTMS570xx.lib > FWKTMS570xx.ofd并查看输出文件的内容。  

    我还在FWK构建日志中观察到批处理文件作为构建后步骤被调用,因此请验证是否将正确/预期的库文件拉入了主构建的链接步骤。

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

    大家好,

    我在FWK库上运行命令armofd,它生成了附加结果"FWKTMS570xx.txt"。 我必须将文件扩展名从.ofd重命名为.txt,因为论坛不允许附加.ofd文件。

    它正确地为“Advanced RISC Machines ARM”生成Comcan.obj,与您生成的相同。

    目标文件: ComCanCrc.obj

     对象文件信息

       文件名:              ComCanCrc.obj             
       格式:                 ELF版本1             
       文件类型:              可重定位文件          
       机器:                高级RISC机器ARM
       机器端点:         大端点                
       入口点:            0x0万                
       供应商:                 Texas Instruments,Inc.   
       制片人:               汇编器                 
       汇编程序版本:15.12      .................................................................3.                   
       段数:     62                        
       文件长度:            1.5384万                     
       存档中的文件偏移: 0x7220c                   
       Elf类:              32位对象            
       elf e_flags:            0x500万                

    然后我在 整个文件中搜索了关键字"Tricore",发现许多目标文件 都是使用"Siemens TriCore嵌入式处理器"生成的。  请使用此关键字进行搜索。

    目标文件: BT.o

     对象文件信息

       文件名:              BT.o                              
       格式:                 ELF版本1                     
       文件类型:              可重定位文件                  
       机器:                Siemens TriCore嵌入式处理器
       机器端心:         小端心                     
       入口点:            0x0万                        
       工具版本:0.0           .........0                             
       段数:     244                               
       文件长度:            5.1268万                             
       存档中的文件偏移: 0x3f77e6.                          
       Elf类:              32位对象                    
       elf e_flags:            0x20万   

    我的系统上安装了任务IDE。

    我很惊讶,因为我在CCS中选择了TMS570LS3137选项 ,它与Tricore系列无关。 我正在CCS中运行我的项目。

    能否告诉我们我们我们缺少什么? 是否是CCS链接程序的错误?

    e2e.ti.com/.../FWKTMS570xx.zip

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

    Bhushan,

    除了TI生成的.obj文件外,该库文件似乎还包含一些.o目标文件(适用于Siemens TriCore)。 包含.obj文件的目录可能也包含这些.o文件吗? 如果是这样,当归档程序创建库时,它将提取该目录中的所有目标文件-这是预期的行为。  您可能会检查ccsArchiver.opt文件以查看正被拉入库的目标文件的列表。 如果发生这种情况,则需要将非TI对象文件移至其他目录。