前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Linux实现树莓派3B的国密SM9算法交叉编译——(二)miracl库的测试与静态库的生成

Linux实现树莓派3B的国密SM9算法交叉编译——(二)miracl库的测试与静态库的生成

作者头像
墨文
发布于 2020-02-28 09:08:40
发布于 2020-02-28 09:08:40
1.2K00
代码可运行
举报
文章被收录于专栏:m0w3nm0w3n
运行总次数:0
代码可运行

  先参考这篇文章 

Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署、简单测试与eclipse工程项目测试

  部署好环境,并简单测试交叉编译环境是否安装成功,最后实现在Eclipse上进行交叉编译。

  这篇文章主要介绍在Eclipse上进行miracl的交叉编译测试与生成miracl静态库,方便后续实现国密SM9算法。

一、MIRACL库介绍

  MIRACL(Multiprecision Integer and RationalArithmetic C/c++ Library)是一套由Shamus Software Ltd.所开发的一套关于大数运算函数库,用来设计与大数运算相关的密码学之应用,包含了RSA 公开密码学、Diffie-Hellman密钥交换(Key Exchange)、AES、DSA数字签名,还包含了较新的椭圆曲线密码学(Elliptic CurveCryptography)等等。运算速度快,并提供源代码。

MIRACL用户手册(译):https://wenku.baidu.com/view/d542f2ed0975f46527d3e1dc.html

  由于毕业论文涉及到国密SM9算法,所以需要在树莓派中实现该SM9,查阅相关资料,有大神已经在windows平台上用miracl库实现了(https://blog.csdn.net/yaoyuanyylyy/article/details/80871509),然后自己同样在windows平台部署成功,但是需要和树莓派做秘钥协商,因此经过大量尝试,最后找到一个可行的方法,由于树莓派使用的是ARM处理器,所以需要通过交叉编译部署我们的国密算法。

二、MIRACL下载并在Kali上进行编译以及pk-demo测试

1、 从https://github.com/miracl/MIRACL/archive/master.zip下载github下的项目源码。我下载的是.zip压缩包,名字为MIRACL-master.zip。

2、 建立一个目录miracl用来放置源码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /root
mkdir miracl

3、 将下载成功的MIRACL-mater.zip放到上述创建的miracl目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd miracl
cp ../MIRACL-master.zip ./MIRACL-master.zip

4、 解压zip包,把所有独立的文件都放在这个目录,即将所有非目录的文件解压在当前目录下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
unzip -j -aa -L MIRACL-master.zip
rm MIRACL-master.zip

5、 用shell文件编译。如果是64位系统用linux64,如果是32位系统用linux。由于我的系统为64位Kali Linux,因此执行如下命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash linux64

如果提示没有安装g++,请使用  sudo apt-get install g++ 进行安装。

6、 运行源码提供的示例代码 pk-demo,测试一下是否编译成功。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./pk-demo

这个程序是个简单检验,迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange)协议的正确性,如果输出无错误则表示编译完成 ,

编译完成并成功运行!

linux64编译代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm *.exe
rm miracl.a
cp mirdef.h64 mirdef.h
gcc -c -m64 -O2 mrcore.c
gcc -c -m64 -O2 mrarth0.c
gcc -c -m64 -O2 mrarth1.c
gcc -c -m64 -O2 mrarth2.c
gcc -c -m64 -O2 mralloc.c
gcc -c -m64 -O2 mrsmall.c
gcc -c -m64 -O2 mrio1.c
gcc -c -m64 -O2 mrio2.c
gcc -c -m64 -O2 mrgcd.c
gcc -c -m64 -O2 mrjack.c
gcc -c -m64 -O2 mrxgcd.c
gcc -c -m64 -O2 mrarth3.c
gcc -c -m64 -O2 mrbits.c
gcc -c -m64 -O2 mrrand.c
gcc -c -m64 -O2 mrprime.c
gcc -c -m64 -O2 mrcrt.c
gcc -c -m64 -O2 mrscrt.c
gcc -c -m64 -O2 mrmonty.c
gcc -c -m64 -O2 mrpower.c
gcc -c -m64 -O2 mrsroot.c
gcc -c -m64 -O2 mrcurve.c
gcc -c -m64 -O2 mrfast.c
gcc -c -m64 -O2 mrshs.c
gcc -c -m64 -O2 mrshs256.c
gcc -c -m64 -O2 mrshs512.c
gcc -c -m64 -O2 mrsha3.c
gcc -c -m64 -O2 mrfpe.c
gcc -c -m64 -O2 mraes.c
gcc -c -m64 -O2 mrgcm.c
gcc -c -m64 -O2 mrlucas.c
gcc -c -m64 -O2 mrzzn2.c
gcc -c -m64 -O2 mrzzn2b.c
gcc -c -m64 -O2 mrzzn3.c
gcc -c -m64 -O2 mrzzn4.c
gcc -c -m64 -O2 mrecn2.c
gcc -c -m64 -O2 mrstrong.c
gcc -c -m64 -O2 mrbrick.c
gcc -c -m64 -O2 mrebrick.c
gcc -c -m64 -O2 mrec2m.c
gcc -c -m64 -O2 mrgf2m.c
gcc -c -m64 -O2 mrflash.c
gcc -c -m64 -O2 mrfrnd.c
gcc -c -m64 -O2 mrdouble.c
gcc -c -m64 -O2 mrround.c
gcc -c -m64 -O2 mrbuild.c
gcc -c -m64 -O2 mrflsh1.c
gcc -c -m64 -O2 mrpi.c
gcc -c -m64 -O2 mrflsh2.c
gcc -c -m64 -O2 mrflsh3.c
gcc -c -m64 -O2 mrflsh4.c
cp mrmuldv.g64 mrmuldv.c
gcc -c -m64 -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 -m64 -O2 bmark.c miracl.a -o bmark
gcc -m64 -O2 fact.c miracl.a -o fact
g++ -c -m64 -O2 big.cpp
g++ -c -m64 -O2 zzn.cpp
g++ -c -m64 -O2 ecn.cpp
g++ -c -m64 -O2 ec2.cpp
g++ -c -m64 -O2 crt.cpp
g++ -m64 -O2 mersenne.cpp big.o miracl.a -o mersenne
g++ -m64 -O2 brent.cpp big.o zzn.o miracl.a -o brent
g++ -c -m64 -O2 flash.cpp
g++ -m64 -O2 sample.cpp flash.o miracl.a -o sample
g++ -m64 -O2 ecsgen.cpp ecn.o big.o miracl.a -o ecsgen
g++ -m64 -O2 ecsign.cpp ecn.o big.o miracl.a -o ecsign
g++ -m64 -O2 ecsver.cpp ecn.o big.o miracl.a -o ecsver
g++ -m64 -O2 pk-demo.cpp ecn.o big.o miracl.a -o pk-demo
g++ -c -m64 -O2 polymod.cpp
g++ -c -m64 -O2 poly.cpp
g++ -m64 -O2 schoof.cpp polymod.o poly.o ecn.o crt.o zzn.o big.o miracl.a -o schoof

三、使用Eclipse进行交叉编译,并在树莓派上运行pk-demo测试

1、创建交叉应用工程 在 Eclipse 主界面点击菜单 File > New > C/C++ Project > C++ Managed Build,在弹出的“C++ Project”对话框中,输入项目名称为 miracl_cross_pk_demo_cpp 。选择一个项目类型(如Executable/Empty Project),在 Toolchains 中一定要选 Cross GCC,这是CDT对交叉环境的支持,提供了额外的功能,以方便嵌入式应用程序的开发。

点击下一步,来到“Select Configurations”页面,我们采用默认,直接下一步,来到“Cross GCC Command”的设置。这里我们可以填写交叉编译工具链的交缀和路径,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Cross compiler prefix: arm-linux-gnueabihf-  #(别打错!)
Cross compiler path: /usr/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

最后点击完成,一个交叉项目就创建好了。关于交叉编译前缀和路径的设置,在项目创建后,可以在项目的属性中改变它。

2、添加头文件及源文件

在miracl_cross_pk_demo_cpp项目中添加  include、src文件夹,其中include用于存放miracl相关文件,src用于存放pk-demo.cpp源文件

拷贝文件之前,先将arm版的mirdef.arm文件替换 mirdef.h 文件(此步骤重要!!!),

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cp mirdef.arm mirdef.h  #试用arm版的mirdef头文件

然后再将以下文件从miracl文件夹中拷贝到 include 文件夹中(不需要拷贝mrmuldv.c,因为mrmuldv.c这个文件中的函数已经在mrcore.c文件中实现,否则会编译出错!!!)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
big.cpp   mirdef.h   mrbuild.c   mrflash.c  mrgf2m.c   mrrand.c    mrstrong.c
big.h     mraes.c    mrcore.c    mrflsh1.c  mrio1.c    mrround.c   mrxgcd.c
crt.cpp   mralloc.c  mrcrt.c     mrflsh2.c  mrio2.c    mrscrt.c    mrzzn2b.c
crt.h     mrarth0.c  mrcurve.c   mrflsh3.c  mrjack.c   mrsha3.c    mrzzn2.c
ec2.cpp   mrarth1.c  mrdouble.c  mrflsh4.c  mrlucas.c  mrshs256.c  mrzzn3.c
ec2.h     mrarth2.c  mrebrick.c  mrfpe.c    mrmonty.c  mrshs512.c  mrzzn4.c
ecn.cpp   mrarth3.c  mrec2m.c    mrfrnd.c   mrpi.c     mrshs.c     zzn.cpp
ecn.h     mrbits.c   mrecn2.c    mrgcd.c    mrpower.c  mrsmall.c   zzn.h
miracl.h  mrbrick.c  mrfast.c    mrgcm.c    mrprime.c  mrsroot.c

 再将miracl中的 pk-demo.cpp 文件拷贝到 src 下,并改名为 main.cpp

3、设置工程属性(头文件包含位置)

右击工程,选择properties,在左侧栏中选中C/C++ Build → Settings → Tool Settings,Cross GCC Compiler 中的 includes 和 Cross G++ Compiler 中的 includes 都要添加本项目的include文件夹:

 Apply and Close 应用并保存设置。

4、编译项目:Project > Build Project

编译成功,并产生一个 Debug 文件夹,再将 Debug下的 miracl_cross_pk_demo_cpp 可执行文件拷贝到树莓派中,

5、树莓派执行

将编译好的二进制文件拷贝到树莓派中执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod 777 miracl_cross_pk_demo_cpp     #赋予可执行权限,否则执行不了
./miracl_cross_pk_demo_cpp             #执行

树莓派成功执行 pk-demo 测试程序!!!

下一步将miracl编译为静态库,给国密SM9算法调用。

四、将miracl库交叉编译为静态库libmiracl.a

1、创建C++静态库应用工程 在 Eclipse 主界面点击菜单 File > New > C/C++ Project > C++ Managed Build,在弹出的“C++ Project”对话框中,输入项目名称为 miracl 。选择一个静态库项目类型(如 Static Library / Empty Project),在 Toolchains 中一定要选 Cross GCC,这是CDT对交叉环境的支持,提供了额外的功能,以方便嵌入式应用程序的开发。

点击下一步,来到“Select Configurations”页面,我们采用默认,直接下一步,来到“Cross GCC Command”的设置。这里我们可以填写交叉编译工具链的交缀和路径,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Cross compiler prefix: arm-linux-gnueabihf-  #(别打错!)
Cross compiler path: /usr/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

最后点击完成,一个交叉静态库项目就创建好了。

2、添加头文件及源文件

在 miracl_cross 项目中添加  include 文件夹,其中 include 用于存放 miracl 相关的头文件,src 用于存放 miracl 相关的源文件

然后将 miracl_cross_pk_demo_cpp/include 中的 *.h 头文件拷贝到 miracl/include 中,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
big.h  crt.h  ec2.h  ecn.h  miracl.h  mirdef.h  zzn.h

 然后再将 miracl_cross_pk_demo_cpp/include 中的 *.c 和 *.cpp 源文件拷贝到 miracl/src 中,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
big.cpp mrarth2.c mrdouble.c mrflsh3.c mrio2.c mrround.c mrstrong.c
crt.cpp    mrarth3.c  mrebrick.c  mrflsh4.c  mrjack.c   mrscrt.c    mrxgcd.c
ec2.cpp    mrbits.c   mrec2m.c    mrfpe.c    mrlucas.c  mrsha3.c    mrzzn2b.c
ecn.cpp    mrbrick.c  mrecn2.c    mrfrnd.c   mrmonty.c  mrshs256.c  mrzzn2.c
mraes.c    mrbuild.c  mrfast.c    mrgcd.c    mrpi.c     mrshs512.c  mrzzn3.c
mralloc.c  mrcore.c   mrflash.c   mrgcm.c    mrpower.c  mrshs.c     mrzzn4.c
mrarth0.c  mrcrt.c    mrflsh1.c   mrgf2m.c   mrprime.c  mrsmall.c   zzn.cpp
mrarth1.c  mrcurve.c  mrflsh2.c   mrio1.c    mrrand.c   mrsroot.c

3、设置工程属性(头文件包含位置)

同样,右击工程,选择properties,在左侧栏中选中C/C++ Build → Settings → Tool Settings,Cross GCC Compiler 中的 includes 和 Cross G++ Compiler 中的 includes 都要添加本项目的include文件夹:

 Apply and Close 应用并保存设置。

4、编译项目:Project > Build Project

编译成功,并在 Debug 文件夹生成一个 libmiracl.a 静态库文件,

下一步将miracl编译为静态库,给国密SM9算法调用。

五、调用第四步生成的静态库文件在树莓派上测试

1、创建应用工程 在 Eclipse 主界面点击菜单 File > New > C/C++ Project > C++ Managed Build,在弹出的“C++ Project”对话框中,输入项目名称为 miracl_cross_libtest 。选择一个项目类型(如Executable/Empty Project),在 Toolchains 中一定要选 Cross GCC,这是CDT对交叉环境的支持,提供了额外的功能,以方便嵌入式应用程序的开发。

点击下一步,来到“Select Configurations”页面,我们采用默认,直接下一步,来到“Cross GCC Command”的设置。这里我们可以填写交叉编译工具链的交缀和路径,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Cross compiler prefix: arm-linux-gnueabihf-  #(别打错!)
Cross compiler path: /usr/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

最后点击完成,一个应用项目就创建好了。

2、添加头文件、源文件及库文件

在 miracl_cross_libtest 项目中添加  include、src、lib文件夹,其中include用于存放miracl相关头文件,src用于存放pk-demo.cpp源文件,lib用于存放libmiracl.a库文件。

将 miracl_cross/include 中的 *.h 头文件拷贝到 miracl_cross_libtest/include 中,

将 miracl_cross/Debug 中的 libmiracl.a 库文件拷贝到 miracl_cross_libtest/lib 中,

 将 miracl中的 pk-demo.cpp 文件拷贝到 src 下,并改名为 main.cpp

 3、设置工程属性(头文件与库文件包含位置)

右击工程,选择properties,在左侧栏中选中C/C++ Build → Settings → Tool Settings,Cross GCC Compiler 中的 includes 和 Cross G++ Compiler 中的 includes 都要添加本项目的include文件夹:

头文件不再截图,配置库文件 如下(Other options 不要添加内容!!!)

 Apply and Close 应用并保存设置。

4、编译项目:Project > Build Project

编译成功,并产生一个 Debug 文件夹,再将 Debug下的 miracl_cross_libtest 可执行文件拷贝到树莓派中,

5、树莓派执行

将编译好的二进制文件拷贝到树莓派中执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod 777 miracl_cross_libtest     #赋予可执行权限,否则执行不了
./miracl_cross_libtest             #执行

树莓派成功执行 pk-demo 测试程序!!!

下一步将miracl编译为静态库,给国密SM9算法调用。

代码语言:javascript
代码运行次数:0
运行
复制
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
树莓派下编译并使用miracl密码库
MIRACL用户手册:https://wenku.baidu.com/view/d542f2ed0975f46527d3e1dc.html
墨文
2020/02/28
1.4K0
树莓派下编译并使用miracl密码库
国密SM9算法C++实现(Linux)
首先参考 Linux下编译并使用miracl密码库 该博文在linux下编译Miracl库。
墨文
2020/02/28
1.6K0
国密SM9算法C++实现(Linux)
Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署、简单测试与eclipse工程项目测试
这篇文章主要介绍了交叉编译的实现,包括环境部署,并简单测试交叉编译环境是否安装成功。 
墨文
2020/02/28
1.5K0
Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署、简单测试与eclipse工程项目测试
Linux下编译并使用miracl密码库
参考:http://blog.sina.com.cn/s/blog_53fdf1590102y9ox.html
墨文
2020/02/28
2.8K0
Linux下编译并使用miracl密码库
Ubuntu实现树莓派交叉编译
在一个平台上生成另一个平台上的可执行代码。为什么要大费周折的进行交叉编译呢?一句话:不得已而为之。有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行所需要的编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
用户8705057
2021/06/08
2.6K0
在树莓派3b上运行uboot
最近想研究一下树莓派3b的一些底层驱动的代码,比较好的就是直接可以看树莓派3b的实现。因为usb驱动,网卡驱动,以及lcd驱动,都可以在uboot中直接找到。有了这些东西,对于我们直接写树莓派3b的驱动程序,提供了极大的帮助,所以现在先在树莓派3b上编译运行起来uboot。
bigmagic
2020/04/14
2.1K0
在树莓派3b上运行uboot
树莓派环境配置,并在Ubuntu18.04上配置交叉编译环境
由于权限问题,此时登录usr1用户后使用sudo命令会提示该用户不在sudoers文件中
AnieaLanie
2022/06/19
1K0
Ubuntu 16.04上用CMake图形界面交叉编译树莓派的OpenCV3.0
最近有个科研课题需要在树莓派上做一系列验证,但是实验的程序是依赖OpenCV库的(最重要我们修改了库源码),而在树莓派上编译OpenCV源码很费时间,因此我只好使用交叉编译的方法来编译源程序。刚开始我们觉着网上材料大片,这部分的问题应该不大。可到操刀干活的时候,我才发现网上很多方法不仅繁琐,而且有的甚至还不是那么一回事,没看到一篇完全适合我的情况的。于是,我花了一天半左右的时间,整理这些材料并结合一点TRIZ原理,完成了这项任务。现在分享一下我的方案总结,不过我的方案不尽完善,欢迎大家指点修正,帮助后人节省时间。
知忆
2021/06/06
1.1K0
xmake从入门到精通9:交叉编译详解
xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。
ruki
2019/12/19
1.8K0
如何移植RTT微内核到树莓派3B
作者是第一次接触微内核,目前也没有深入去了解。很高兴参与RTT在树莓派上搭建的微内核的体验版。这篇文章描述如何移植,以及体验。该工程我目前在ubuntu16.04和ubuntu18.04上编译运行都没问题。
Rice加饭
2022/05/10
7300
如何移植RTT微内核到树莓派3B
树莓派交叉编译环境的建立
因为树莓派本身就相当于一台电脑,所以我们可以在树莓派上编译内核或者应用程序,但是树莓派相较于台式机或者笔记本电脑,资源和速度还是有区别的,所以就需要建立交叉编译环境在台式机或者笔记本上安装交叉编译工具链,如果在树莓派本机上编译一个内核得几个小时才能编译完。所以安装交叉编译环境相当重要,是我们后面学习开发的一切保证。假设你已经安装好虚拟机和Ubuntu系统,当然也可以用其他版本的Linux系统。树莓派官方推荐交叉编译用乌班图,所以我们安装了乌班图的16.04长期支持版本,发布于16年四月。 虚拟机Virtul
用户1605515
2018/04/11
3.6K0
树莓派交叉编译环境的建立
ARM C++交叉编译环境构建方法
接下来的说明以Ubuntu Desktop 19.10为例进行,18.04也没有问题。
面向对象思考
2020/03/25
3.2K0
ARM C++交叉编译环境构建方法
使用树莓派构建嵌入式C++调试环境
本文以使用树莓派4b为例说明构建嵌入式C++执行环境。树莓派本身可以到各大购物网站直接购买,价格大概300-500元不等。之所有选择树莓派是因为它的系统比较完善,容易上手。但是需要实现说明的是本文说明的大部分内容并不仅限于树莓派。
面向对象思考
2020/03/25
1.8K0
使用树莓派构建嵌入式C++调试环境
rt-smart移植分析:从树莓派3b入手
移植rt-smart到最新的板子上具体需要注意哪些细节,哪些才是移植rt-smart的关键点?本文从树莓派3b上移植rt-smart的角度,从头分析rt-smart移植的关键细节。为了简化系统,这里只做了rt-smart的最小系统的移植,启用了rt-smart最基本的特性。
bigmagic
2020/12/22
1.4K0
rt-smart移植分析:从树莓派3b入手
树莓派3b在rt-thread上移植LittlevGL
本文主要针对树莓派3b,对rt-thread上移植lvgl进行叙述。用最简单的办法,实现rtt移植lvgl的过程。只需要加几个文件,就可以在使用最新版本的LittlevGL图形库了。
bigmagic
2020/05/07
2.2K0
高效搭建树莓派3b rt-thread的开发环境
由于电子设备的普及,越来越多人拥有树莓派,不管是作为电子极客,还是作为普通普通人,很多人都会玩一下树莓派,可以学习一些c语言,也可以学习嵌入式。下面我来介绍一下如何在树莓派上运行rt-thread rtos。
bigmagic
2020/03/17
3.3K0
【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )
① FFMPEG 源码下载地址 : http://ffmpeg.org/download.html#releases
韩曙亮
2023/03/27
1.6K0
【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )
树莓派3B安装ffmpeg[通俗易懂]
树莓派型号:3b 操作系统:ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img
全栈程序员站长
2022/09/12
1.3K0
树莓派3B安装ffmpeg[通俗易懂]
手把手教你树莓派linux内核如何编译
之前我们讲过树莓派交叉编译工具链的安装和配置,今天我们就来讲如何利用我们安装好的交叉编译器编译树莓派linux内核。 首先通过以下命令获得linux内核源码,也可以自己下载然后拷贝过来 $ git clone --depth=1 https://github.com/raspberrypi/linux 因为小猿已经下载过了,我们就直接进入以下命令,我们使用的是树莓派3,所以配置如下 进入linux文件夹 cd linux KERNEL=kernel7 make ARCH=arm CROSS_COMPILE=
用户1605515
2018/04/10
2.8K0
手把手教你树莓派linux内核如何编译
Linux交叉编译Windows静态库
静态库是一个包含预编译代码的文件,可以与可执行程序链接以创建单个自包含的可执行文件。静态库中的代码直接链接到可执行文件中,这使得它比动态库更快、更高效。
Linux兵工厂
2024/04/15
3980
Linux交叉编译Windows静态库
推荐阅读
相关推荐
树莓派下编译并使用miracl密码库
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文