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/PROCESSOR-SDK-AM335X:混合 C 和 C++"未定义对 μ`运算符 new (unsigned int)'"

Guru**** 2522770 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/612692/ccs-processor-sdk-am335x-mixing-c-and-c-undefined-reference-to-operator-new-unsigned-int

器件型号:PROCESSOR-SDK-AM335X
Thread 中讨论的其他器件:SYSBIOS

工具/软件:Code Composer Studio

您好!

请参阅主题行。

我从一个示例项目(NIMU 基本示例)开始、以进行构建。  整个项目使用纯 C 语言。 现在我要添加几个 C++类、它们实际上只是 C 代码的封装包装程序。

所有内容都可以编译、因为我已经正确地补偿了在 C 和 C++之间发生的名称改编问题。  以下是在传入 TCP/IP 连接上执行的代码的一个小示例:

newskt =接受(skt、(struct sockaddr*)&client、&size);
System_printf ("\n 连接到达:sd:%x\n"、newskt);
system_flush();

ipaddr = client.sin addr.s_addr;
m_connection = new CCxn();

m_connection->Initialize (newskt、ipaddr); 

上述代码位于 cppp 文件中、而不是 C 文件中、因此编译器知道什么是"新"。

具体而言,故障发生在 m_connection = new CCxn(); (第58行)

'调用:GNU Linker'
"C:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc.exe -mtune = cortex-A8..... "
C:\Users\Scott\workspace_v7\Nimu_BasicExample_bbbAM335x_armExampleProject\Debug/./HTTP/Server.cpp:58:未定义对`
/HTTP/Server.cpp `
/HTTP/Server.cpp ` operator new (unsigned int)'的引用 C:\Users\Scott\workspace_v7\bbu_BasicExample_AM335x_armExampleProject\undefine_bined_cron_crone_b1352_b_b_b_workspace_workspace_b_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace_workspace 

问题是链接器(而不是编译器)显示无法找到"新"、"删除"或"__cxa_end_clean"。

我使用的是 GNU v 4.9.3编译器。  当我尝试将其更改为 GNU 6.3.1编译器时、我收到了"struct timeval "的重新定义错误的大量加载、因此我放弃了该策略、因为我不想在接下来的几天内花时间来弄清为什么存在标头冲突。

链接 C++项目并解析这些 basci C++运算符的过程是什么?

谢谢。

-CSW

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

    更多信息、但仍然无法编译。   我将链接器从"libc.a"更改为"libstdc++.a"

    现在我得到:

    C:/ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu libg.a (lib_a-signalr.o):在函数` kill_r'中:
    /home/xlibrary/trees/gnu/gnu-c04/src/linaro/gcc-arm-none-eabi-4_7-2012q4-20121208/src/newlib/newlib/libc/reent/signalr.c:61:未定义对` kill'的引用
    collect2.exe:错误:LD 返回1退出状态

    应由谁/什么部门来提供此功能?

    请勿建议我更新到较新的编译器。 当我使用新编译器时、我甚至无法进入链接阶段、因为在不同头文件中定义的"struct timeval "等内容存在标头冲突、其类型冲突。

    C:/ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd/socketndk.h:306:8:错误:重新定义了"结构时间值"
    C:\ti\ccsv7\tools\compiler\gcc-arm-none-eabi-6-2017-q1-updates\arm-no-eabi\include\sys\_timeval.h:52:8:错误:之前定义的'struct timeval'

    完全不同的来源!  一个来自"stdio.h" 、另一个来自"socket.h"

    在发布这些头文件之前、没有人实际检查这些头文件?

    这是诊断。  (并且与“select()”也存在冲突 )

    在 C:/ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd/sys/socket.h:45:0文件中、
    从./HTTP/Server.cpp:27:
    C:/ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd/socketndk.h:306:8:错误:重新定义'struct timeval'
    结构 timeval{
    ^~~~~~~μ A
    在包含在 c:\ti\ccsv7\tools\compiler\gcc-arm-none-eabi-6-2017-q1-updates\arm-no-eabi\include\csys\select.h:26:0中的文件中、
    从 c:\ti\ccsv7\tools\compiler\gcc-arm-none-eabi-6-2017-q1-updates\arm-no-eabi\include\sys\types.h:68、
    从 c:\ti\ccsv7\tools\compiler\gcc-arm-none-eabi-6-2017-q1-updates\arm-no-eabi\include\stdio.h:61、
    从./HTTP/Server.cpp:8:
    C:\ti\ccsv7\tools\compiler\gcc-arm-none-eabi-6-2017-q1-updates\arm-no-eabi\include\sys\_timeval.h:52:8:错误:之前定义的'struct timeval'
    结构计时{
    ^~~~~~~μ A 

    在这两种情况下、甚至都无法构建应用程序。

    -CSW

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

    尝试更改 CCS 变量 CG_TOOL_GCC 以使用 g++而不是 gcc。  右键点击工程名称、然后选择 Properties。  然后使用随附的屏幕截图作为指南。

    谢谢、此致、

    乔治

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

    乔治

    谢谢。。。 我越来越近了。  这是有道理的、我只是不确定 CCS 生态系统的设置位置。

    现在,正如我在另一个主题上发布的内容(您可能无法看到,因为突然它需要得到主持人的批准),我得到了:

    Makefile:159:目标'NIMU_BasicExample_bbbAM335x_armExampleproject.out'的配方失败
    C:/ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu libc.a (lib_a-signalr.o):在函数`_kill_r'中:

    在之前的 GCC 编译器中、我尝试更改为 G++ std 库、但得到的函数缺失(请参阅下面的屏幕图像)。  

    现在我更改为 g++编译器、我将使用 libc 和 libstdc++ 库获取它。

    我是否需要提供此功能?  如果是、函数签名是什么?  对它的任何引用是在哪里?  

    (此外、我进行了搜索、我发现的所有内容都是被告知链接到 C++库以解决该问题的其他人。  在我的案例中、它具有相反的效果... 它导致缺少"_kill"。)

    (在我的 Linux 世界中、我假设它与信号矢量挂钩、但 RTOS 中没有真正的"定位"、有吗?)

    -CSW

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

    [引用 USER="Christopher Weber]makefile:159:目标'NIMU_BasicExample_bbbAM335x_armExampleproject.out'的配方失败
    C:/ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu libc.a (lib_a-signalr.o):在函数` kill_r'中:[/quot]

    此消息还有更多内容、缺失的内容可能会描述问题。  遇到此错误时、您能否发布整个构建日志?

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

    考古学家

    下面是背景故事:

    我进行了 BBB_Nimu 基本项目、并正在进行此项目。  我添加了一个 CPP 文件、它抱怨没有"新"或"删除"。  我更改了编译以使用 g++编译器、而不是 gcc 编译器。  我还在"libc.a"和"libstdc++.a"之间进行了更改。  在执行此操作时、它现在告诉我缺少一个"kill"函数。  我还将所有*。C 文件重命名为*。cpp、以查看这是否会暴露 C++编译器和 C 编译器之间的任何问题。  有几个问题、但与这一缺失的功能无关。

    每个源代码模块都可以干净地构建。 链路阶段缺少该功能。  没有其他消息指示任何其他错误或警告。  如果需要额外的库或存档模块、则不会记录任何内容。

    下面是完整的构建日志:


    ****为项目 NIMU_BasicExample_bbbAM335x_armExampleproject 构建配置调试****

    "C:\\ti\\ccsv7\\utils\\bin\\gmake"-k -j 4 all -O
    gmake[1]:输入目录'C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject/Debug
    '构建文件:./Nimu_Bebam335x.cfg'
    '调用:XDCtools '
    "c:/ti/xdctools_3_32_01_22_core/xs "--xdcpath="C:/ti/bios_6_46_05_55/packages;C:/ti/pdk_am335x_1_0_7/packages;C:/ti/edma3_lld_2_12_04_28/packages;C:/ti/ndk_2_25_01_11/packages;C:/ti/ccsv7/ccs_base;" xdc.tools.configuro configPkg -t GNU.targets.arM.A8F -p ti.platforms.beaglebone -r debug -c "C:/ti/gcc-arm-none-eabi-4_9-2015q3 "../Nimu_Bam335x.cfg
    正在制作 package.mak (由于 package.bld)...
    正在为软件包 configPkg 生成接口(因为 package/package.xdc.inc 比 package.XDC 旧)...
    从 package/cfg/nimu_bbbam335x_pa8fg.cfg 配置 Nimu_Bambam335x.xa8fg ...
    正在生成自定义 ti.sysbios 库 makefile ...
    与 ti.transport.ndk.Nimu 库链接:/lib/am335x/a8/release/ti.transport.ndk.nimu.aa8fg
    链接库 ti.drv.emac:./lib/am335x/a8/release/ti.drv.emac.aa8fg
    链接库 ti.drv.gpio:./lib/a8/release/ti.drv.gpio.aa8fg
    链接库 ti.drv.i2c:./lib/a8/release/ti.drv.i2c.aa8fg
    链接库 ti.drv.UART:./lib/a8/release/ti.drv.uart.aa8fg
    链接库 ti.board:./lib/bbbAM335x/a8/release/ti.board.aa8fg
    链接库 ti.osal:/lib/tirtos/a8/release/ti.osal.aa8fg
    链接库 ti.csl:./lib/am335x/a8/release/ti.csl.aa8fg
    正在开始构建库源...
    制作 C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject/src/sysbios/sysbios.aa8fg ...
    gmake[1]:输入目录`C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject/src/sysbios
    gmake[1]:没有为`all '执行任何操作。
    gmake[1]:离开目录`C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject/src/sysbios
    已完成库构建。
    cla8fg 封装/cfg/Nimu_Bbam335x_pa8fg.c……
    '完成的建筑:./Nimu_bbbam335x.cfg'
    '
    gmake[1]:离开目录'C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject/Debug
    '生成文件:./GPIO_SoC.CPP'
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -dSOC_AM335x -DBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject -i"-mf_gpio"-mc"@-mc"-mc"-mc"-mcp -mf_gpio.gpio"-mpio-mf_mf_mgpio.gpio"-chrom-mf_mf_gpio-mf_gpio-gpio-mf_gpio-mf_gpio-gpio-mf_mf_mf_mf_mf_
    '已完成构建:./GPIO_SoC.CPP'
    '
    '生成文件:./uart_soc.cpp'
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -dSOC_AM335x -DBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject -i"c:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -mf_unt -mc"-mc"-mcu -t_muart"-muart_muart -mad.c -g.c -muart"-muart"-muart -dunt -mad.c -muart"-muart -g.c -muart"-muart.c -muart.c -muart.c -muart.c -muart.c -d @
    '完成构建:./uart_soc.cpp'
    '
    '生成文件:./main_bbbAM335x.cpp'
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -dsOC_AM335x -dBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject -i"c:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -mf"-mstrand-mc"-mc"-mb35x -md -md -mcp -mbmd -md -mcp -mcr -md -md -mcp -mcr @-md -mcr -mcr -md -md -mcr -md -md -mcr -md -mcp -md -mcr -m35x -md -md -md -md -md -md -mcr -md
    '完成的建筑:./main_bbbAM335x.cpp'
    '
    '生成文件:./Nimu_osal.cpp'
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -dosc_am335x -dBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject -i"C:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -mf"-mospr-mcp -nimum-mc"-nimos-mc"-mcr -mos-mcr -mcr -mnimu -md -mos-md -md -md -nimum.u -md -md -md -md -mcp -mos"-mr -nimosral"-mr -mr -mos-md -m.mr -nimos-m.@
    '完工建筑:./Nimu_osal.cpp'
    '
    '生成文件:./HTTP/Headers.cpp '
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -dsto_am335x -dBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject @/HTTP/Headers.cpp -i"c:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -mf"-mf-ngmd -config"-gmd -gmd -gmd -gmd -gmd -gmd 头文件-md -gmd -gmd -gmd -gmd -t"-md -gmd -gmd -gmd -gmd -gmd -gmd -gmd -gmd -gmd -g"-t"-t.
    ./Nimu_osal.cpp:在函数'void OSAL_TaskCreate (void*)'中:
    ./Nimu_osal.cpp:102:31:警告:已弃用从字符串常量到'XDC_String{aka char*}'的转换[-Wwrite-string]
    taskParams.instance->name ="EmacPollPkt";
    ^μ A
    '完成的建筑:./HTTP/Headers.cpp
    '
    '生成文件:./HTTP/RespHeaders.cpp '
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -dsto_am335x -dBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject @/HTTP/RespHeaders.cpp -i"c:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -mf"-mstrior/dmp.cd/dg"-md -chorm -md -md -pkg-md -md -dmp"-md -chinesg -md -dmd -chorm -md -md -page"-chinesg -md -md -dmp.g/http-chinesg -md -md -chinesg -md -md
    '完成的建筑:./HTTP/RespHeaders.cpp
    '
    '生成文件:./HTTP/WebServer.cpp '
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -dsto_am335x -dBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject @/HTTP/WebServer.cpp -i"c:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -mf"-mstriorm -dmp.md-md -md -warm-g/gmd -web"-md -md -md -webmd -md -md -md -gmd -gmd -gmd -gmd -gmd -gmd -gmd -gmd -gmd -gmd -gmp -gmd -gmd -gmd -g
    '完成的建筑:./HTTP/WebServer.cpp
    '
    '生成文件:./HTTP/HttpCxn.cpp '
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -dsto_am335x -dBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject @/HTTP/HttpCxn.cpp -i"c:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -mf"-tpxmd -md -tdm"-tdmp -g/tpf-n.tdg/tpf-n"-gmd -gmd -chdgmd -chorm -tpf-n"-tpf-n"-tpf-n.tdmp.g.g/tp -g/tpf-n"-tpf-n.tdmp.dm"-tg/tg/tpf-n.tdmp.dm"-tg/tg.
    '完成的建筑:./HTTP/HttpCxn.cpp
    '
    '生成文件:./common/SocketTools.cpp '
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -DSOC_AM335x -DBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject @/common/SocketTools.cpp -i"c:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -mf"-common -mcump -mf.md.c -common -configket -mf"-mf"-mf"-common -mf -mf -mf"-mf -soct.mf -mf -mf -mf -mf -mf -mcump -mf -mf -common -mf"-mf -mf -mf -mf -chintrab.mf -mf
    '完成的建筑:./common/SocketTools.cpp
    '
    '生成文件:./common/tools.cpp '
    '调用:GNU 编译器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/ndk_2_25_01_11/packages/ti/ndk/inc/bsd +.exe"-c -mcpu=cortex-A8 -mtune =cortex-A8 -March =armv7-a -marm -mfloat-abi=hard -Dam3359 -dsto_am335x -dBBB_AM335X -i"C:/Users/scott/workspace_v7/NIMU_BasicExample_bbbAM335x_armExampleproject @/common/tools.cpp -i"c:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -mf"-common -mf"-md -md -mdmf"-common -md/md compildm.md"-mf-md -configgmd -common -mf-gmf"-mf-md -md -mf"-common tools"-common -mf-mf-mf"-md -mf-mf"-md -mf-md -mf"-md
    '完成的建筑:./common/tools.cpp
    '
    '构建目标:Nimu_BasicExample_bbbAM335x_armExampleproject.out'
    '调用:GNU 连接器'
    "c:/ti/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-g /ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu /ti/pdk_am335x_1_0_7/packages/ti/starterware/binary/soc/lib/am335x-evm/a8/release/gcc /HTTP/Headers.o /HTTP/RespHeaders.o ++.exe"-mtex-A8 -marmm -Dam3359 -DSOC_AM335x -DBBB_AM335X -g -gdwarf-3 -gstrict-dwarf -Wall -mMD -mp -mfloat-abi=hard -wl、-Map、"nimu_example"-am_mcus.iptex"-m.cc_b.emintrabus.ine.com/natembule-b.empf-nobtex-m.intrabus"-m.ipc.intrabus"-m.cc.ipe.com/nobtex-m.ipc.intrabus.ine.tex-m.ine.tex-am.cc.empf-nobtex-m.ine.com "/ti/ndk_2_25_01_11/packages/ti/ndk/os/lib /HTTP/HttpCxn.o -am.ipc.obtex-m.em_am.emb.intrabus"-m.empf-natem_am.cc.ine.gov.em_am.cc.ine.com/doc"-m.em3.3b./common/tools.o /common/SocketTools.o /HTTP/WebServer.o
    Makefile:161:目标'NIMU_BasicExample_bbbAM335x_armExampleproject.out'的配方失败
    C:/ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu libc.a (lib_a-signalr.o):在函数`_kill_r'中:
    /home/xlibrary/trees/gnu/gnu-c04/src/linaro/gcc-arm-none-eabi-4_7-2012q4-20121208/src/newlib/newlib/libc/reent/signalr.c:61:未定义对` kill'的引用
    collect2.exe:错误:LD 返回1退出状态
    gmaked[1]:***[NIMU_BasicExample_bbbAM335x_armExampleProject.out]错误1
    gmake:***[全部]错误2.
    Makefile:157:目标'all'的配方失败

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

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

    [引用 user="Christopher Weber"]未定义对`_kill '的引用

    好的、这是您的实际问题。  kill 是一个系统调用;我不知道 G++选择在哪个库中提供它、或者它是否完全提供。

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

    [引用 user="archaeology"]

    Christopher Weber
    对` kill'的引用未定义

    [/报价]

    是的...  这是 RTOS。  RTOS 是否应该提供此调用?  即使它只是一个"总线故障"矢量?

    [引用 user="archaeology"]

    我不知道 G++选择在哪个库中提供它、或者它是否完全提供。

    [/报价]

    那么、我无法构建 C++项目吗?

    如果不能、好的、我将找到另一种方法来实现它。  但最好知道有一个限制。

    -CSW

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以构建一个 C++项目、但我不知道您是否可以构建一个项目、并调用其中的"kill"。 这超出了我的专业知识范围;我们需要找到一个认识的人。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不、我无法构建 C++项目。 因为链接器正在寻找不存在的系统调用。
    我没有在项目中调用"kill"、其他一些库需要调用。

    是的、请找到了解的人。

    这看起来并不像它已准备好用于现实世界。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Christopher、

    GCC 附带的2个 RTS 库- libridimon 和 libnosys、其中包含_kill 的实现。 您似乎在链接行"-rdimon -nosys"上指定了这两个库。 这可能是问题的一部分。 如果您看到任何更改,是否可以删除两者之一并报告? 如果您的应用程序没有为 CIO 使用半主机、则可以保留"-nosy"。 否则、请保留"-rdimon"。

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

    Ashish、

    我没有指定链接器。 这是示例工程随附的链接器设置。

    我删除了"rdimon"。

    然后尝试多次重建、因为 CCS 7.2不断锁定我(没有人对这个版本进行 QA?  告诉我它不能很好的“gmake”... 直到我再次按几次 Build、然后它通过磁力找到它)

    除了缺少"kill"之外、现在还缺少 kill_r、getpid_r、close_r、lseek_r、refor_r、refore_r、 ftsat_r、isatty_r..

    我在中添加了 rdimon、并删除了 nosys。  现在、它又回到了"杀死"的状态。  具体而言、它说:

    Makefile:160:目标'NIMU_BasicExample_bbbAM335x_armExampleproject.out'的配方失败
    C:/ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu libc.a (lib_a-signalr.o):
    在函数` kill_r'中:  
    /home/xlibrary/trees/gnu/gnu-c04/src/linaro/gcc-arm-none-eabi-4_7-2012q4-20121208/src/newlib/newlib/libc/reent/signalr.c:61.
    未`对 kill'的引用
    collect2.exe:错误:LD 返回1退出状态

    但是、您说该函数位于这些库的一个(或两个)内部... (这就让我感到、函数签名未正确声明为链接为 C 至 C++ 项目-就像我不得不修复的其他 TI 提供的头文件集一样、因为它们是损坏的、甚至无法在 C++中编译)。

    此外,您能否具体定义“半主机”...?  在我必须深入研究的大量文档中、我从未见过它的定义。  我不能告诉你我是不是这样做,是什么都没有定义。

    -CSW

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

    很遗憾听到您在尝试编译示例工程(该工程应开箱即用)时遇到很多问题。 您能否尝试从链接行中删除"-rdimon"和"-nosy"并添加"-specs=rdimon.specs"?

    以下是定义半主机的链接:
    infocenter.arm.com/.../index.jsp

    如果您在应用程序的 cfg 文件中看不到“xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport')"”,则表示尚未启用半主机,您应该使用 libnosys (--specs=nosys.specs)。

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

    Ashish、

    当 CCS 运行正常时、它可以开箱即用。  但是、当我尝试简单地将其更改为 C++时、一切都会中断。  
    (您知道有一个带有 ifdef cplusplus、extern "C"{  ……的头文件 但没有关联的右括号、对吧?)

    我删除了 rdimon 和 nosys、并 在"其他标志"设置中添加了--specs=rdimon.specs。  现在一切都链接了。

    配置文件包含"var SemihostSupport = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');" 、因此我不需要添加该部分。

    案例已关闭(至少这一个)。 谢谢。

    -CSW

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

    您好、Christopher、

    您能否共享为 C++断开的头文件? 我将提交一个错误来修复该头文件、并查看同一个包中的其他头文件以检查是否存在类似的问题。

    谢谢、

    Ashish

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

    Ashish、

    首先是文件
    C:\ti\pdk_am335x_1_0_7\packages/ti\board\board.h  
    没有保护函数声明的*任何* extern "C"包装程序。  我必须将其放入我的代码中:

    #ifdef __cplusplus
    extern "C"{
    #endif
    #include 
    #ifdef __cplusplus
    }
    #endif 

    在文件 C:\ti\pdk_am335x_1_0_7\packages\ti\drv\emac\src\v4\emac_drv_v4.h 中、有一个打开位置

    #ifdef __cplusplus
    extern "C"{
    #endif 

    但没有关闭控制。  

    我快速(并非详尽无遗)搜索了头文件、查找了关键字"_cplusplus"、并找到了一些具有空缺但没有结束的其他文件:

     C:\ti\pdk_am335x_1_0_7\packages/ti\board\src\idkAM437x\device\qspi_flash.h
     C:\ti\pdk_am335x_1_0_7\packages/ti\board\src\idkAM571x\device\qspi_flash.h  
     C:\ti\pdk_am335x_1_0_7\packages/ti\board\src\idkAM572x\device\qspi_flash.h
     C:\ti\pdk_am335x_1_0_7\packages\ti\cSL\csl_tsipAux.h
     C:\ti\pdk_am335x_1_0_7\packages/ti\CSL\src\IP\bwmgmt\V0\csl_bwmngmtAux.h
     C:\ti\pdk_am335x_1_0_7\packages/ti\drv\spi\test\mcspi_serial_flash\src\W25Q.h
     C:\ti\pdk_am335x_1_0_7\packages/ti\drv\spi\test\qspi_flash\src\Flash_S25FL\S25FL.h
     C:\ti\pdk_am335x_1_0_7\packages/ti\drv\usb\src\include\debug.h

    还有一些仅包含闭幕词:
     C:\ti\pdk_am335x_1_0_7\packages/ti\starterware\library\nandlib\include\nand_lib.h
     C:\ti\pdk_am335x_1_0_7\packages/ti\starterware\utils\display_utils_dss.h
     C:\ti\pdk_am335x_1_0_7\packages/ti\starterware\utils\display_utils_ip.h
     C:\ti\pdk_am335x_1_0_7\packages/ti\starterware\utils\display_utils_lcdc.h  

    有些文件,例如  C:\ti\pdk_am335x_1_0_7\packages/ti\drv\gpio\Settings.h, 它们创造性地重新定义了处理它的“extern”

    #ifdef __cplusplus
    #define __extern extern "C"
    #else
    #define __extern extern
    #endif 

    因此、这些仅包含一个"ifdef _cplusplusplus "

    -CSW  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Christopher。 我已针对 Processor SDK 打开了一个错误并描述了该问题。 错误 ID 为 PRSDK-2819。 我们无法使错误数据库在外部可用、但您可能会在未来的处理器 SDK 发行说明中看到此 JIRA ID、表明它已被解决。

    最棒的
    Ashish