我正在尝试在我的AVR项目中使用AVR Crypto Lib中的AES函数(http://avrcryptolib.das-labor.org/trac/wiki/AES)但是当我复制所有必需的文件时它给了我以下错误。我在Windows上使用WinAVR,并且在AVR Studio 5上尝试使用默认项目但没有成功。
main.o: In function `main':
c:\.../main.c:40: undefined reference to `aes128_init'
c:\.../main.c:41: undefined reference to `aes128_enc'
"make.exe": *** [main.elf] Error 1
它甚至没有尝试读取存在这些函数的.c文件。网站上的示例说要调用#include“aes.h”,如果查看该文件,则会调用所有其他.h文件。
如果我编辑.h文件并告诉他们包含自己的.c文件 - 例如在aes_keyschedule.h中我告诉它包含“aes_keyschedule.c”,这种方法有效,并使'aes128_init'消息消失但引入了更多问题。当我到达asm .S文件时,它最终无法编译。当然,这不是它应该如何工作,但我不知道其他人是如何编译的。
所以我想我会问 - 有没有其他人遇到这个问题,或者有没有人有一个非常简单的AES示例我可以看看?也许有比AVR Crypto Lib更好的东西?
谢谢你, 亚历
答案 0 :(得分:1)
发现问题,不得不修改makefile。
我将SRC更改为以下内容并且一切正常:
SRC = $(TARGET).c aes128_dec.c aes128_enc.c aes_dec.c aes_enc.c aes_invsbox.c aes_keyschedule.c aes_sbox.c
另外,我将ASRC更改为:
ASRC = gf256mul.S