test.c :(。text + 0x36):未定义的引用`md5_file'

时间:2013-06-27 17:06:09

标签: c++ c polarssl

我安装了polarssl:

  1. 使
  2. sudo make install
  3. 尝试编译名为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/

2 个答案:

答案 0 :(得分:4)

编译器将尝试按照呈现对象或文件的顺序完成链接。在这种情况下,由于您先放置-lpolarssl,因此该库中不需要任何未解析的符号,因此没有任何内容链接在其中。

最后放-lpolarssl可让编译器从源库中解析源文件中未解析的符号。

答案 1 :(得分:2)

包含很好。

但是链接是错误的。尝试将-lpolarssl最后放在链接器命令中。

如果链接器找不到libpolarssl.a将其指向正确的位置,则添加-L