对“ kill”的未定义引用

问题描述 投票:5回答:3

我用C开发了一个用于ARM7嵌入式系统的应用程序。现在,我想将其编译并链接到C ++,以便使用某些C ++功能。为此,我使用的是mipsel-elf-g++而不是mipsel-elf-gcc。我可以成功地用mipsel-elf-g++编译我的代码,但是在链接步骤中,我得到了错误:

/ opt / mipsel / lib / gcc / mipsel-elf / 3.4.6 /../../../../ mipsel-elf / lib / libc.a(lib_a-abort.o):在函数中```abort': /cygdrive/d/Files/cross/mips/newlib-1.15.0/newlib/libc/stdlib/abort.c:63: undefined reference to _exit'`

/ opt / mipsel / lib / gcc / mipsel-elf / 3.4.6 /../../../../ mipsel-elf / lib / libc.a(lib_a-signalr.o):在函数中```_kill_r': /cygdrive/d/Files/cross/mips/newlib-1.15.0/newlib/libc/reent/signalr.c:61: undefined reference to kill'`

collect2:ld返回了1个退出状态

我搜索了这个问题,发现我应该实现自己的_exitkill函数,因此我将此代码添加到了我的项目中:

void _exit(int code)
{
    while(1);

}

int _DEFUN (kill, (pid, sig), int pid _AND int sig)
{
    if(pid == __MYPID)
        _exit(sig);

    return 0;
}

通过添加这两个函数,固定了对'_e​​xit'错误的未定义引用,但是对“ kill”错误的未定义引用仍然存在。

我应如何解决此问题?

c++ c embedded arm linker-errors
3个回答
2
投票

尝试将kill功能包装在extern "C" { … }中。而且,为清楚起见,我建议不要使用_DEFUN宏。


0
投票

我不确定,但是我首先看到的是参数“ kill”没有类型...

但是我唯一遇到的未定义参考错误是链接错误...所以您忘记链接到任何库?


0
投票

我知道这是一个老问题,但是我遇到了同样的问题并找到了解决方案。将这些选项添加到链接器:

-specs=nano.specs -specs=nosys.specs -lnosys
© www.soinside.com 2019 - 2024. All rights reserved.