链接" gcc"而不是" ld" - 图书馆问题

时间:2015-10-08 08:57:46

标签: gcc linker

我希望与GCC驱动程序(" gcc")而不是" ld"进行链接(以便我可以启用https://github.com/capistrano/rails/issues/102)。

" GCC"似乎表现得与" ld"完全不同但是,并不接受一些相同的命令行选项。更糟糕的是,我认为我遇到了与图书馆有关的问题。使用" gcc"对于链接,我得到了一些"未定义的引用"错误。其中许多是undefined reference to 'operator new(unsigned int)'undefined reference to '__aeabi_unwind_cpp_pr0'

在我的设置中,提供new等功能的库是Newlib。我正在e2 Studio中开发 - 这是Eclipse的一个变种,专为瑞萨MCU开发而开发。 e2 Studio配置为给我一个"预建" Newlib的版本,而不是每次构建时都构建Newlib。

在我的makefile中,链接是通过" ld"完成的,并且工作正常:

arm-none-eabi-ld
-o "RZ_A1H_USB_Host_Func_RSK.x"
-T"E:/Renesas e2 workspace/RZ_A1H_USB_Host_Func_RSK\HardwareDebug\LinkerSubCommand.tmp"
-T"E:\Renesas e2 workspace\RZ_A1H_USB_Host_Func_RSK\compiler_specific\GNU_e2studio-IRAM.ld"
$(USER_OBJS) $(LIBS) $(LIBRARY_GENERATOR_OUTPUTTYPE_OUTPUTS)
-L"C:\PROGRA~2\KPIT\GNUARM~1.02-\ARM-NO~1\ARM-NO~1/lib/gcc/arm-none-eabi//4.9-GNUARM-NONE_v14.02/interwork" -L"C:\PROGRA~2\KPIT\GNUARM~1.02-\ARM-NO~1\ARM-NO~1/lib/gcc/arm-none-eabi/4.9-GNUARM-NONE_v14.02/interwork"
-L"C:\PROGRA~2\KPIT\GNUARM~1.02-\ARM-NO~1\ARM-NO~1/arm-none-eabi/lib/interwork"
-lm
-lstdc++
-lc
-lgcc
-estart

但是,我所要做的就是将arm-none-eabi-ld替换为arm-none-eabi-gcc,这会导致"未定义的引用"上述错误。

任何线索?我需要告诉的事情" gcc"我没有必要告诉" ld"?非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

最终解决了我自己的问题。输入文件是在一个外部文件中指定的,该文件是用这个位引用的:-T"E:/Renesas e2 workspace/RZ_A1H_USB_Host_Func_RSK\HardwareDebug\LinkerSubCommand.tmp"

以正常方式指定输入文件改为解决了问题。