test.c:(.text+0x36): неопределенная ссылка на `md5_file'

Я установил polarssl:

  1. делать
  2. sudo make install

попытался скомпилировать очень простой файл с именем 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 ответа

Решение

Компилятор попытается завершить компоновку в порядке представления объектов или файлов. В этом случае, так как вы положили -lpolarssl Во-первых, в этой библиотеке не было необходимости в неразрешенных символах, поэтому ничего не было связано.

Ввод -lpolarssl last позволяет компилятору разрешать неразрешенные символы из вашего исходного файла из этой библиотеки.

Включает нормально.

Но связывать это неправильно. Попробуй поставить -lpolarssl последний в команде компоновщика.

Затем добавьте -L если компоновщик не найдет libpolarssl.a, чтобы указать его в нужном месте.

Другие вопросы по тегам