我安装了polarssl:
尝试编译名为test.c
的非常简单的文件:
#include <stdio.h>
#include "polarssl/md5.h"
int main(int argc, char * argv[])
{
int i;
for (i=1;i<1;i++)
{
char res[16];
if (md5_file("file.txt",res) == 0)
{
int count;
for (count=0;count<16;count++)
printf("%02x",res[count]);
printf("n");
}
}
return 0;
}
像这样编译:
gcc -lpolarssl test.c -I / usr / local / include / polarssl /
但它告诉我:
/tmp/cczptlsk.o: In function `main':
test.c:(.text+0x36): undefined reference to `md5_file'
collect2: ld returned 1 exit status
问题是什么,如何解决?我知道100%的polarssl文件在/usr/local/include/polarssl/
答案 0 :(得分:4)
编译器将尝试按照呈现对象或文件的顺序完成链接。在这种情况下,由于您先放置-lpolarssl
,因此该库中不需要任何未解析的符号,因此没有任何内容链接在其中。
最后放-lpolarssl
可让编译器从源库中解析源文件中未解析的符号。
答案 1 :(得分:2)
包含很好。
但是链接是错误的。尝试将-lpolarssl
最后放在链接器命令中。
如果链接器找不到libpolarssl.a将其指向正确的位置,则添加-L
。