链接期间出错:对函数

时间:2016-04-11 15:55:19

标签: compiler-errors linker arm embedded

目前我正在尝试使用SEGGER编译AT91SAM7S256的二进制文件,并且我在链接阶段遇到了一个问题(源文件都编译正常),其中任何使用" lib_AT91SAM7S64的文件.H"尝试链接时有多个未定义的引用。

以下是一些错误消息的示例:

Output/Executable_1 Debug/Obj/AdcInterface.o: In function `initializeADCInterface':
undefined reference to `AT91F_PIO_CfgInput'
undefined reference to `AT91F_PIO_InterruptEnable'
undefined reference to `AT91F_PIO_GetInterruptStatus'

事情是,这些功能“未定义”"在" lib_AT91SAM7S64.h"中定义。文件。我不知道该怎么做,因为我之前在链接阶段从未遇到过错误。

我没有使用任何makefile或任何东西。该项目最初是使用Green Hills软件开发的,但它在该IDE上编译和构建没有问题。但是,我无法访问Green Hills Software,并且一直试图让SEGGER编译它。

1 个答案:

答案 0 :(得分:2)

几乎可以肯定,您并没有将具有实际代码的库链接到这些函数。 .h只定义它们,以便其他代码可以正确调用这些函数。

您必须(以某种方式)指定包含这些符号的.a。我不确定这是否意味着您需要编辑您的makefile,或者在项目中添加一些.a,或者在IDE中指定您要构建的硬件。对不起,我没有使用SEGGER,所以我不知道这些细节。希望这足以让您前进找到您的解决方案。