上篇文章主要描述了如何从源工程中将configure.ac转变为configure,并成功使其在Ubuntu上运行,此篇主要描述将其移植到嵌入式arm开发板上(在官方手册中有列举支持的硬件平台架构)。
交叉编译
1. 解压源工程代码;
2.进入目录wolfssl-master,将上文提到的build-aux文件夹全部复制到当前路径;
3.依次执行如下命令,生成configure;
/* 解释见上篇或自行搜索 */
aclocal -I /usr/share/aclocal-1.14 -I /usr/share/libtool/m4 --install
autoconf
autoheader
automake --add-missing
4.配置,这里我仅列举我做测试时用的选项(目前百度搜索资料很少,后续的选项及例子及API等还请参考官方手册);
./configure --prefix=$PWD/../install/arm-gcc/ --host=arm-linux CC=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-gcc AR=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-ar STRIP=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-strip RANLIB=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-ranlib ARCHFLAGS="-mcpu=cortex-a9 -mthumb" --enable-dtls --enable-openssle --enable-opensslextra
5.make
6.make install
此时指定的安装目录下有生成bin、include、lib、share四个文件夹,可以将bin内的wolfssl-config拷贝到开发板系统的/usr/bin路径下、lib内的几个动态库文件拷贝到开发板系统的/usr/lib路径下;
验证
同安装到Ubuntu,交叉编译过程中,源代码工程下的examples路径下相关的例子也已编译完成,但此处有个问题,
将箭头所指的可执行文件拷贝到开发板,运行后提示找不到相关路径和文件:
这应该是该文件在执行时动态链接相关内容并执行(看大小猜测),但是我目前还不清楚为什么会牵扯到编译器,有了解的同学可以下方评论区告诉我,感谢!
在.libs文件夹下可以看到有个比较大的可执行文件,将其拷贝到开发板路径并cd到该路径下(如果在其他路径执行如/**/**/server,会报错,提示wolf root失败,必须要进入到可执行文件的同级目录下才可,手册上有解释,说是证书路径的问题),同时,需要将源代码工程下的certs文件夹拷贝到开发板可执行文件的同级目录,
<--开发板路径内容
当前路径开启两个窗口,一个窗口先执行./server,另外一个窗口后执行./client 127.0.0.1,结果如下:
执行testsuite.test(因为在配置编译选项时基本上按照默认的来,有些功能默认是关闭的,所以会有下面的一些错误)
至此,移植成功。