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.

[参考译文] Compiler/66AK2H12:CPP文件的链接器错误:Multiple definition of `写入#39;

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/664630/compiler-66ak2h12-linker-error-for-cpp-file-multiple-definition-of-_write

部件号:66AK2H12

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

尝试构建c++项目以在BIOS中测试邮箱时出现以下链接器错误。


c:\ti/gcc-arm-none-ebia-4_9-2015q3/bin/arm-none-eabi-gcc.exe"-mtun=cortex-a15 -marm -dsoc_k2H -ddevice_k2H -ffunice-sections -fdata-sections -gmailf-3 -sprox-lip-lip-lip-lf-f-lip/fwlstrat-f-wlip-wlip-wlip-lip-f-f-lstrat-f-list-lip-f-wlip-lip-f-f-lip-f-lip-f-list-lip-f-list-lip-f-f-lip-f-f-lip-f-f-lip-f-f-lip-f-f-f-lip-f-lip-f-f-lip-f-f-f-lip-f-f-f-status-wlip-wlip-f-wlip-w
Makefile:145:目标'MaillboxTest.Out '的配方失败
C:/ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/FPU\librdimon.a (rdimon-syscalls.o):在函数`写入'中:
/home/xlibrary/trees/gnu/gnu-c04/src/linaro/gcc-arm-none-eabi-4_7-2012Q4-20121208/src/newlib/libgile/arm/syscalls.c:2012.1208万:425:多个`定义
C:/ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/FPU\libnosys.a (write.o):/home/xlibrary/trees/gnu/gnu-c04/src/linaro/gcc-arm-no-none-eabi-4_1.2012万fuy
collect2.exe:错误:LD返回1个退出状态

有什么想法?

谢谢!
Bruce

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    确保代码中没有任何名为"write"的全局变量或函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不,我在代码中没有任何名为"write"的函数或变量。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的(通配)猜测是librdimon.a和libnosys.a都提供了写的定义。 可能有一个(或两个)正在尝试提供系统I/O的削减版本 仅根据错误消息进行诊断有点困难;可能是写本身不是问题,但可能是程序使用了该模块中的其他变量/函数,而这两个库中都没有定义这些变量/函数。 遗憾的是,这就是我能为您提供的所有帮助,因为我不熟悉您正在使用的任何功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Bruce:

    您是否阅读过此评论: processors.wiki.ti.com/.../BIOS_with_GCC_(CortexA)

    托德
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这实际上是问题所在。 我从链接器中删除了libnosys.a库,程序成功构建。

    这引出了一个问题:如何知道何时包括libnosys.a或何时包括librdimon.a?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是一个问题:当  需要支持半宿主时,如何知道何时包括libnosys.a或何时包括librdimon.a?

    librdimon.a。  半宿主是一种机制,它允许在ARM目标上运行的代码进行通信,并使用运行调试器的主机上的输入/输出设备,例如,使用printf()向CCS CIO控制台报告输出,或使用fopen()访问主机上的文件。

    libnosys.a在不需要半宿主时使用。

    请注意,使用 librdimon.a链接程序意味着当调试器未连接或在调试器中禁用半宿主支持时,程序将不会运行,因为启动代码会使用断点指令停止并等待调试器恢复程序。