GCC - 链接不成功

时间:2010-12-22 14:57:39

标签: gcc linker-errors rtems

抱歉我的英语不是很好。我会尽我所能:)

我正在尝试在C中为我的卡西欧图形计算器编译插件。使用官方SDK时,这可以正常工作。因为它仅适用于Windows,所以我想使用gcc。

所以我得到了 sh-rtems-gcc ,它是来自macports的binutils,并尝试根据this instructions编译我的程序。我复制粘贴了描述的 addin.ld crt0.s 并放置了我的 main.c libfxsys.a (来自与上述说明相同的人)在同一目录中。 sub-dir include 包含fxsys'标头。我使用nm验证了.a文件中库的所有功能的存在。

使用此命令进行编译时:

sh-rtems-gcc-4.2.3 -m3 -mb -nostdlib -I./include -c crt0.s main.c

一切正常。但后来我试图链接:

sh-rtems-gcc-4.2.3 -m3 -mb -nostdlib -L. -o myaddin.elf -Taddin.ld crt0.o main.o -lfxsys

并收到以下错误:

main.o: In function `__main':
main.c:(.text+0x248): undefined reference to `_Bdisp_AllClr_VRAM'
...     
... (--- cut 16 other errors in the same format ---)
...
main.c:(.text+0x360): undefined reference to `_Sleep'
./libfxsys.a(locate.o): In function `_locate':
locate.c:(.text+0x28): undefined reference to `_locate_OS'
collect2: ld gab 1 als Ende-Status zurück

所有缺少的符号都在 libfxsys.a 中。我用nm验证了这一点。

我已经在命令中使用了库的位置,因为这通常被认为是google中发现的其他帖子的失败来源,但没有成功。我还尝试添加和删除上述说明中使用的 - lgcc 选项,但没有成功。

我的主机是英特尔Mac,OS X 10.6

因为我不知道如何解决这个问题,并且编译我的程序,我不得不问:我做错了什么?如何在不使用SDK的情况下编译程序?

提前致谢, xythobuz

修改

我也试过联系:

sh-rtems-ld -EB -L. -o myaddin.elf -Taddin.ld crt0.o --start-group main.o libfxsys.a --end-group

但它产生与上面相同的输出。

1 个答案:

答案 0 :(得分:1)

我不能说出确切的问题,但会像这样调查:

  1. 找到包含缺失符号的库。使用nm查看符号名称
  2. 一旦您知道哪个库包含符号,请确保您以正确的顺序链接到该符号。尝试使用链接器递归符号解析选项-( -)