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.

[参考译文] 编译器:C2000 Linker v 16.9 .4.LTS性能

Guru**** 2609895 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/637015/compiler-c2000-linker-v16-9-4-lts-performance

主题中讨论的其他部件:TMS320C2.8346万

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

我们正在考虑从CCS5切换到CCS7,但当前链接器在链接项目时需要40多分钟,在CCS5上需要2分钟的时间进行链接。

我的编译目标是TMS320C2.8346万。

TMS320C2000 6.1 软件0:~135秒

TMS320C2000 Linker v 16.9 4.LTS:~ 2700

TMS320C2000 Linker v 16.9 .5.LTS:~ 2700

我尝试使用一些链接程序选项,如 --reread_libs,但似乎没有什么会影响链接时间。

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

    我在C2000链接器的16.9 .4.LTS版本中没有发现任何此类问题。  我认为这是我们以前没有见过的。  如果您向我们发送测试案例,以便我们进行调查,我将不胜感激。  在这种情况下,我们需要完整的CCS项目。  如果您按照文章 项目共享中的说明将其打包,然后将其附加到下一篇文章,我将不胜感激。

    谢谢,此致,

    -George

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

    您是否使用以下任何选项?

    • 执行4
    • --no_sym_merge (也称为"-b")
    • --compress_dwarf[=on,off]

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

    执行4

    对我们不起作用,链接器认为过载是不兼容的重新定义。

    --no_sym_merge /-b

    我刚刚打开它,它将CCS5的构建时间缩短到~3s,CCS7的构建时间减少到~10s。 这是完全可以接受的。 是否有任何缺点(我假设主要的副作用是调试信息占用更多磁盘空间)。

    顺便说一下,我们有很多泄漏的抽象(大多数标头包括十几个其他标头等),所有旧代码(这是大多数)都在全局命名空间中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想说链接时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于名称转换,C++重载函数不可能出现类型合并失败,即使在-O4也是如此。 这些函数中是否有一个是使用'extern "C"’声明的? 如果是这样,根据"一个定义规则",您在技术上不能拥有此函数的多个不同定义。 如果没有,请向我们展示这些函数的原型,包括它们所在的类或名称空间?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不知道在16.9 .4.LTS上还有任何链接程序性能问题,这些问题可以由--no_sym_merge解决。 这可能是一个新问题。 如果是这样,那么查看整个项目以便我们可以对其进行分析将非常有帮助。 您是否正在链接任何可能仍在使用COFF stabs debug的库? 您能否向我们展示您的完整编译和链接选项? 如果您重新构建项目并向我们发送整个生成控制台窗口,这将是最简单的操作。

    是的,使用--no_sym_merge的主要副作用是调试信息较大,这意味着调试器(CCS)需要更长的时间来分析它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不,它们不是`extern "C"`。 但是,当我开始创建可重现的测试案例时,我会报告这个问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉,我没有权限向您发送该项目,我肯定不会收到该项目。

    我们正在使用--symdebug:dwarf/-g,但我不知道这些库。

    编译器标志:
    -v28 -ml -mt --float_support=fpu32 -o3 -g --optimize_with debug=on --include_path="C:16.9 /devel/ServoApplication/Shared_LIB/ISD"--include_path="/servodio/servo/servo/servo/servo/servo/servo/servoel="-server/server/server/servo/servel/servo/sodel="/server/servo/servo/servo/servel/servo/servel="/servo/serv/servo/servo/serv/servo/serv/servel="-/sodel/serv/serv/serv/serv/serv/serv/serv/servo/serv/servo/serv/serv/servo/servel="-/sodel/serv/serv/serv/sodel/serv/serv/serv/serv/serv/serv/serv/serv/serv/serv/serv/servel="-/serv/serv/serv//sodel="-/sode/serv/serv/serv/serv/serv/serv/serv/serv

    链接器标志:
    -v28 -ml -mt --float_support=fpu32 -o3 -g --optimize_wide_debug=on --luremlate_ansi --define=config_appl_module --define=dsd_app --define=nDEBUG --diag_warning=225 --display_error_number ---express=176 --no_rpt_map/rsm-scv-sm/line_lip-sp-sp-sp-sp_sp_m/ip-scrs/ip-scrm.cm-scrs/ip_l_lip-scrs/ip-scrs/ip-scrs/ip-scrs/ip-m_m_m.cm-scrs/ip-scr.cm-scr_l_l_l_lip-scr.cm-scrs/ip-scrs/ip-scr.cm-scrs/ip_l_l_m-scr.cm-scr.cm-scr_gu_gu-scr 16.9 16.9
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dominic Fandrey 说:
    抱歉,我没有权限向您发送项目,我肯定不会收到。

    我理解。  如果您知道可以直接发送给我,也许会有所帮助。  将鼠标悬停在我的屏幕名称或头像上。 此时将弹出一个框。 单击发送私人消息。 在出现的邮件撰写界面中,使用回形针图标附加zip文件。

    谢谢,此致,

    -George