2013-05-29 53 views
0

我想通過創建基準測試文件來比較Windows和Ubuntu中libtomcrypt的AES算法性能,但是我在編碼時遇到了錯誤。請幫幫我。下面是我比較文件:libtomcrypt用法基準測試

Compare.c:

`#include <time.h> ` 
#include <tomcrypt.h> 
#define MIN_TIME 10.0 
#define MIN_ITERS 20 ` 

double test_rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) { 
    int iterations = 0; 
    clock_t start; 
    double elapsed=0.0; 
    int out; 
    start=clock(); 
    do{ 
out = rijndael_ecb_encrypt(pt, ct, skey); 
     iterations++; 
     elapsed=(clock()-start)/(double)CLOCKS_PER_SEC; 
    } while(elapsed<MIN_TIME || iterations<MIN_ITERS); 
    elapsed=1000.0*elapsed/iterations; 
    printf("%s \n",pt); 
    printf("%s \n",skey->data); 
    printf("%s \n",ct); 
    printf("iterations: %8d \n",iterations); 
    printf("%8.2lf ms per iteration \n",elapsed); 
    printf("out: %d \n",out); 
    return elapsed; 
} 

int main() { 
    unsigned char pt[22]="-K4)<i50~'APg2fa7DiV"; 
    unsigned char ct[22]; 
    unsigned char key[16]="EDB1C6D13FC72"; 
    symmetric_key *skey; 
    int err; 
    double tout1; 
    printf("%x",sizeof(pt)); 
    printf("%l",sizeof(key)); 
    if((err=rijndael_setup(key,16,0,skey))!=CRYPT_OK) { 
    printf("%s",error_to_string(err)); 
    return -1; 
    } 
    tout1=test_rijndael_ecb_encrypt(pt,ct,skey); 
    printf("%s \n",ct); 
    printf("%f",tout1); 
    return 0; 
} 

但是,當我編譯該它顯示運行時錯誤爲:

gcc -o "TestC" ./src/TestC.o 
./src/TestC.o: In function `test_rijndael_ecb_encrypt': 
/home/anvesh/workspace/TestC/Debug/../src/TestC.c:27: undefined reference to `rijndael_ecb_encrypt' 
./src/TestC.o: In function `test_rijndael_ecb_decrypt': 
/home/anvesh/workspace/TestC/Debug/../src/TestC.c:53: undefined reference to `rijndael_ecb_decrypt' 
./src/TestC.o: In function `main': 
/home/anvesh/workspace/TestC/Debug/../src/TestC.c:82: undefined reference to `rijndael_setup' 
/home/anvesh/workspace/TestC/Debug/../src/TestC.c:83: undefined reference to `error_to_string' 
collect2: error: ld returned 1 exit status 
make: *** [TestC] Error 1 

哪兒我去錯了嗎?

回答

0

你忘了和tomcrypt庫鏈接。與-ltomcrypt編譯到庫鏈接:

gcc file.c -ltomcrypt 
+0

現在,一個新的錯誤如下出現: 在/ usr /斌/勞工處:找不到-ltomcrypt collect2:錯誤:LD返回1個退出狀態 – annunarcist

+0

庫名稱是libtomcrypt.a它是 - ltomcrypt還是-llibtomcrypt?而FYI庫是在../libtomcrypt文件夾中,而頭文件位於../libtomcrypt/src/headers。 – annunarcist

+0

我想我越來越接近生成二進制文件。現在當我執行這個命令時: cc -L /../ libtomcrypt-1.17/-I /../ libtomcrypt-1.17/src/headers Compare.c 它會拋出以下錯誤: /usr/bin/ld :無法找到-l /../ libtomcrypt-1.17/libtomcrypt.a collect2:錯誤:ld返回1退出狀態 make:*** [比較]錯誤1 我該如何解決這個錯誤? – annunarcist