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
哪兒我去錯了嗎?
現在,一個新的錯誤如下出現: 在/ usr /斌/勞工處:找不到-ltomcrypt collect2:錯誤:LD返回1個退出狀態 – annunarcist
庫名稱是libtomcrypt.a它是 - ltomcrypt還是-llibtomcrypt?而FYI庫是在../libtomcrypt文件夾中,而頭文件位於../libtomcrypt/src/headers。 – annunarcist
我想我越來越接近生成二進制文件。現在當我執行這個命令時: 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