抱歉我的英语不是很好。我会尽我所能:)
我正在尝试在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
但它产生与上面相同的输出。
答案 0 :(得分:1)
我不能说出确切的问题,但会像这样调查:
nm
查看符号名称-(
-)
。