openssl 客户端程序移植到arm平台 OK6410上运行
来源:互联网 发布:知乎 唐望 编辑:程序博客网 时间:2024/06/02 04:45
openssl 客户端程序如何移植到arm平台上运行?
在我的项目中拥有一个服务器程序file_server和一个客户端程序file_client,它们实现了通过安全套接字层传输文件的功能。原本两个程序都在pc上运行,现在要把客户端程序移植到arm平台上。
原来makefile中生成客户端程序的规则是这样的:
gcc file_client.c -o file_client -lssl -lpthread
如果想移植到arm平台是不是直接将 gcc 改为 arm-linux-gcc就可以了呢?回答是不行的,原因在于-lssl连接的库libssl.a或 libssl.so原本是在x86的环境下编译生成的,所以直接arm-linux-gcc file_client.c -o file_client -lssl -lpthread会提示搜索到的库格式不对。
因此应该重新编译openssl,步骤如下:
1.config:
#config no-asm (忽略x86汇编部分)
2.改Makefile
1) CC= gcc 改成 CC = arm-linux-gcc;
2) 删除 CFLAG= 中的 “-march=pentium”;(如果有的话)
3) AR=ar $(ARFLAGS) r 改为 AR=arm-linux-ar $(ARFLAGS) r;
4) ARD=ar $(ARFLAGS) d 改为 ARD=arm-linux-ar $(ARFLAGS) d;
5)RANLIB= /usr/bin/ranlib 改为 RANLIB= arm-linux-ranlib;
3.编译
#make
编译完成后会产生libssl.a和libcrypto.a两个归档文件,将这两个文件copy到客户端代码目录下,直接和源文件进行编译:
arm-linux-gcc file_client.c -o file_client libcryto.a libssl.a -lpthread
这时会出现:error:openssl/ssl.h: No such file or directory的错误,这显然是因为我们的arm-linux-gcc编译器没有把x86环境下的/usr/include作为标准头文件搜索目录的缘故。(原来在pc机上装x86的openssl时,将openssl的头文件install到这个目录)
我们可以加上一个选项: -I/usr/include
这时按照:
arm-linux-gcc file_client.c -o file_client libcryto.a libssl.a -lpthread -I/usr/include
进行编译,又会冒出一大堆的:undefined refrence to ' ' 错误。符号未定义?可以头文件都包含进来了啊?仔细分析另一种可能的原因是库的使用,准确的说是库的编译顺序,libssl.a用到很多符号,而这些符号只在libcryto.a定义或申明,那么libcrypto.a应该出现在libssl.a的后面。
arm-linux-gcc file_client.c -o file_client libssl.a libcryto.a -lpthread -I/usr/include
这时还会提示:undefined refrence to ' dlopen' ,再将 libdl.a(用于加载动态库方法的库)包含进去即可。
最终编译命令:
arm-linux-gcc file_client.c -o file_client libssl.a libcryto.a -lpthread -I/usr/include -ldl -static
将生成的可执行程序 file_client拷贝到开发板,chmod 777 file_client修改权限,在pc上运行服务器程序,在开发板上运行客户端程序即可,下面给出我的程序在OK6410上的运行效果图:
1.运行客户端程序:
2.使用cd home切换客户端目录:
3.下载服务器上的文件serv.cpp
4.下载完成
5.屏幕刷新后,可见客户端home目录下多出的文件serv.cpp
- openssl 客户端程序移植到arm平台 OK6410上运行
- libxml2移植到OK6410 ARM开发板上...
- openssl 移植到 arm
- Qt Creator可执行程序移植到OK6410上
- 在ARM上移植openssl
- Openssl移植到Arm linux
- openssl移植到ARM Linux
- pppoe客户端移植到ok6410开发板
- ARM平台移植 openssl-1.1.0
- arm平台移植openssl-1.1.0
- arm平台移植openssl-1.1.0
- 关于在Android上运行纯C程序即移植thttpd到android平台
- 移植Linux3.0.1到OK6410上
- 移植sqlite到OK6410开发板上
- 移植 NTP客户端 到ARM
- 移植 DHCP 客户端 到ARM
- 从零开始移植QT4.8.5之四--交叉编译QT程序并运行在OK6410上
- qt程序在arm-tiny6410上的运行以及移植
- ubuntu 将最大化,最小化,关闭按钮置于窗口右侧
- android 数字证书
- mysql 将远程数据保存到本地
- 高效使用JavaEE ORM框架
- Bash csh 命令提示符
- openssl 客户端程序移植到arm平台 OK6410上运行
- 导出固定的excel
- 那些暴强的回帖
- ArcGIS Engine Controls fail to build using Visual Studio 2010 on a 64-bit OS
- GeneralSanguo工作笔记3——使用Sound播放声音
- 最近,
- Java文件下载的几种方式
- 第二部分 域名对SEO的影响
- WinCE下,快速编译驱动及BSP