我開發了一個用C語言編寫的ARM7嵌入式系統的應用程序。現在我想編譯它並將其與C++鏈接以便使用一些C++功能。爲此,我使用mipsel-elf-g++
而不是mipsel-elf-gcc
。我可以編譯我的代碼以mipsel-elf-g++
成功,但在交聯工序我得到的錯誤:對'kill'的未定義引用
/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'錯誤的未定義引用仍然存在。
我該怎麼做才能解決這個問題?
謝謝你的迴應。我使用你的建議,並可以鏈接我的對象文件。我現在有一個新問題,當我使用'new'運算符或'malloc'函數時,我得到''Segment Fault''信息。你有什麼主意嗎? –
@MirMiladHosseiny你可能想問這是一個新問題。 –
@Mir:值得問一個新問題,但可能是'_sbrk'的一個錯誤實現 – Clifford