ラズベリーパイとLinuxのコンパイラ、ライブラリmiraclパスワードを使用してコンパイルされ、パスワードデータベースmiraclを使用

参考:Linuxのコンパイラとライブラリmiraclパスワードを使用します

MIRACLユーザーマニュアルます。https://wenku.baidu.com/view/d542f2ed0975f46527d3e1dc.html

 

特定のプロセス。

1、https://github.com/miracl/MIRACL/archive/master.zip githubので、プロジェクトのソースをダウンロードしてください。私はMIRACL-master.zipという名前の.zipアーカイブを、ダウンロードしました。

2、ソースmiraclを配置するディレクトリを作成します

MKDIR miracl

3、miracl上記で作成したディレクトリにダウンロード成功MIRACL-mater.zip

CD /パス/に/ miracl 
CP /path/to/MIRACL-mater.zip ./

4、現在のディレクトリにある、すなわちすべての非ディレクトリファイルはアンパック、すべて別々のファイルがこのディレクトリに置かれ、zipパッケージを解凍します

解凍-j -aa -L MIRACL-master.zip

5は、シェル・ファイルを使用してコンパイルされています。ラズベリーパイアームバージョンは、プロセッサを使用しているため、アーム-Linuxで(変換、テキストのコードの端部からLINUX64参照)次のコマンドを実行します。

bashのLinuxのアーム

図6に示すように、サンプルコードPK-デモは、コンパイル正常かどうかをテストするために設けられたソースを実行します。

./pk-demo

出力エラーがコンパイル示す場合、Hellman鍵交換の正当性(のDiffie-Hellman鍵交換)プロトコル - このプログラムは、簡単なテスト、ディフィーあります 

 

 

以上のコンパイルされた、自然に次の2つの方法が、Cプログラムの導入にライブラリをmiracl使用、使用したいです。

この方法の一つ:

1、 源码编译完后的必需的文件是两个头文件miracl.h和mirdef.h以及编译后的静态函数库miracl.a,需要在自己写的C程序中使用。

2、 输入如下代码,命名为main.c

mkdir miracl-test
cd miracl-test
nano main.c

 

#include "miracl.h"

void main()
{
big a, b, c;
miracl *mip = mirsys(5000, 16);
a=mirvar(8);
b=mirvar(7);
c=mirvar(0);
add(a, b, c);
cotnum(c, stdout);
}

将miracl.a, miracl.h, mirdef.h拷贝到与main.c所在目录,浏览一下当前项目目录下的文件

cp ../miracl/miracl.a miracl.a
cp ../miracl/miracl.h miracl.h
cp ../miracl/mirdef.h mirdef.h
ls

3、 gcc编译并输出main执行程序

gcc main.c miracl.a -o main
./main

 

方法二:

1、 将miracl.a放在系统对应的/usr/lib

sudo cp ../miracl/miracl.a /usr/lib/libmiracl.a

2、 在/usr/include下面建立文件夹miracl

sudo mkdir /usr/include/miracl

3、 将miracl下的所有头文件拷贝到/usr/include/miracl

sudo cp ../miracl/*.h /usr/include/miracl

4、 调用miracl时便可直接在自己的程序头文件中加入

#include <miracl/miracl.h>

使用方法一中的例子,即将main.c中的第一行改为include

5、 gcc编译并输出main执行程序

gcc main1.c -lmiracl -o main1
./main1

 

 

linux-arm编译代码如下:

rm *.exe
rm miracl.a
cp mirdef.arm mirdef.h
gcc -c -marm -O2 mrcore.c
gcc -c -marm -O2 mrarth0.c
gcc -c -marm -O2 mrarth1.c
gcc -c -marm -O2 mrarth2.c
gcc -c -marm -O2 mralloc.c
gcc -c -marm -O2 mrsmall.c
gcc -c -marm -O2 mrio1.c
gcc -c -marm -O2 mrio2.c
gcc -c -marm -O2 mrgcd.c
gcc -c -marm -O2 mrjack.c
gcc -c -marm -O2 mrxgcd.c
gcc -c -marm -O2 mrarth3.c
gcc -c -marm -O2 mrbits.c
gcc -c -marm -O2 mrrand.c
gcc -c -marm -O2 mrprime.c
gcc -c -marm -O2 mrcrt.c
gcc -c -marm -O2 mrscrt.c
gcc -c -marm -O2 mrmonty.c
gcc -c -marm -O2 mrpower.c
gcc -c -marm -O2 mrsroot.c
gcc -c -marm -O2 mrcurve.c
gcc -c -marm -O2 mrfast.c
gcc -c -marm -O2 mrshs.c
gcc -c -marm -O2 mrshs256.c
gcc -c -marm -O2 mrshs512.c
gcc -c -marm -O2 mrsha3.c
gcc -c -marm -O2 mrfpe.c
gcc -c -marm -O2 mraes.c
gcc -c -marm -O2 mrgcm.c
gcc -c -marm -O2 mrlucas.c
gcc -c -marm -O2 mrzzn2.c
gcc -c -marm -O2 mrzzn2b.c
gcc -c -marm -O2 mrzzn3.c
gcc -c -marm -O2 mrzzn4.c
gcc -c -marm -O2 mrecn2.c
gcc -c -marm -O2 mrstrong.c
gcc -c -marm -O2 mrbrick.c
gcc -c -marm -O2 mrebrick.c
gcc -c -marm -O2 mrec2m.c
gcc -c -marm -O2 mrgf2m.c
gcc -c -marm -O2 mrflash.c
gcc -c -marm -O2 mrfrnd.c
gcc -c -marm -O2 mrdouble.c
gcc -c -marm -O2 mrround.c
gcc -c -marm -O2 mrbuild.c
gcc -c -marm -O2 mrflsh1.c
gcc -c -marm -O2 mrpi.c
gcc -c -marm -O2 mrflsh2.c
gcc -c -marm -O2 mrflsh3.c
gcc -c -marm -O2 mrflsh4.c
cp mrmuldv.ccc mrmuldv.c
gcc
-c -marm -O2 mrmuldv.c
ar rc miracl.a mrcore.o mrarth0.o mrarth1.o mrarth2.o mralloc.o mrsmall.o mrzzn2.o mrzzn3.o ar r miracl.a mrio1.o mrio2.o mrjack.o mrgcd.o mrxgcd.o mrarth3.o mrbits.o mrecn2.o mrzzn4.o ar r miracl.a mrrand.o mrprime.o mrcrt.o mrscrt.o mrmonty.o mrcurve.o mrsroot.o mrzzn2b.o ar r miracl.a mrpower.o mrfast.o mrshs.o mrshs256.o mraes.o mrlucas.o mrstrong.o mrgcm.o ar r miracl.a mrflash.o mrfrnd.o mrdouble.o mrround.o mrbuild.o ar r miracl.a mrflsh1.o mrpi.o mrflsh2.o mrflsh3.o mrflsh4.o ar r miracl.a mrbrick.o mrebrick.o mrec2m.o mrgf2m.o mrmuldv.o mrshs512.o mrsha3.o mrfpe.o rm mr
*.o gcc -marm -O2 bmark.c miracl.a -o bmark gcc -marm -O2 fact.c miracl.a -o fact
g
++ -c -marm -O2 big.cpp g++ -c -marm -O2 zzn.cpp g++ -c -marm -O2 ecn.cpp g++ -c -marm -O2 ec2.cpp g++ -c -marm -O2 crt.cpp g++ -marm -O2 mersenne.cpp big.o miracl.a -o mersenne g++ -marm -O2 brent.cpp big.o zzn.o miracl.a -o brent g++ -c -marm -O2 flash.cpp
#g
++ -marm -O2 sample.cpp flash.o miracl.a -o sample(该行编译有问题,暂放以待后续解决!!)
g
++ -marm -O2 ecsgen.cpp ecn.o big.o miracl.a -o ecsgen g++ -marm -O2 ecsign.cpp ecn.o big.o miracl.a -o ecsign g++ -marm -O2 ecsver.cpp ecn.o big.o miracl.a -o ecsver g++ -marm -O2 pk-demo.cpp ecn.o big.o miracl.a -o pk-demo g++ -c -marm -O2 polymod.cpp g++ -c -marm -O2 poly.cpp g++ -marm -O2 schoof.cpp polymod.o poly.o ecn.o crt.o zzn.o big.o miracl.a -o schoof

 将mrmuldv.g64换为mrmuldv.ccc

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/little-kwy/p/12285955.html