Неопределенная ссылка на `kill ' - PullRequest
4 голосов
/ 21 января 2012

Я разработал приложение для встроенной системы ARM7 на языке C. Теперь я хочу скомпилировать и связать его с 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 состояние выхода

Я искал об этой проблеме и обнаружил, что должен реализовать свои собственные функции _exit и kill, поэтому я добавил следующие коды в свой проект:

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

}

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

    return 0;
}

При добавлении этих двух функций исправлена ​​неопределенная ссылка на ошибку `_exit ', но неопределенная ссылка на ошибку` `kill' все еще существует.

Что мне нужно сделать, чтобы исправить эту проблему?

Ответы [ 2 ]

2 голосов
/ 21 января 2012

Попробуйте включить функцию kill в extern "C" { … }. И, для ясности, я предлагаю не использовать макрос _DEFUN.

0 голосов
/ 21 января 2012

Я не уверен, но первое, что я вижу, это то, что параметр kill не имеет типа ...

Но единственными неопределенными ошибками ссылок, которые я когда-либо получал, были ошибки связывания... так есть какие-нибудь библиотеки, на которые вы забыли сослаться?

...