当前位置:首页 » 编程软件 » openssl111交叉编译问题

openssl111交叉编译问题

发布时间: 2023-04-15 17:14:34

A. 在unbuntu下使用openssl 写一个加密的C程序,编译提示找不到头文件openssl/*.h

哥门 <openssl/aes.h> 里 的openssl只是文件夹名字而已,
linux下面 /usr/local/include/ /usr/include/ 这两个路径是默认引用的。
所以你没加 -I 也是可以编译的 。
当交叉编译时,那就完全不一样了,必须配置好所有路径。

B. 交叉编译zlib出错

$ export CC=mipsel-linux-gcc
$ ./configure --prefix=/opt --shared
$ make CC=mipsel-linux-gcc
$ make install

ps:此处的环境CC=mipsel-linux-gcc 记得换回来!

C. 一个C语言工程在linux下用gcc编译可以通过,但用arm-linux-gcc交叉编译会报错。

这个很正常,交叉编译的头文件和标准的不一样,定义的时候缺少一些宏竖滑或者函数,根据情况稍微修改一般可以的。除非是操作系统不一样饥纤蠢否则一般都可以很快改正。
举一个不容易改正的例子,MingW是一种Windows下的GCC移植版本,但是它没有fork,所以如果程序中存在fork就会报错,但是这个错误很难烂陪修正,因为Windows里面没有fork函数。

D. 如何将openssl aes源码移植到嵌入式

移植步骤如下:
1、首先将openssl 源码download下来;
2、在你的嵌入式开发环境中,交叉编译openssl源码,生成库文件;
3、在你的嵌入式程序中,添加对交叉编译后的openssl库文件的支持,并在socket通信中调用ssl相关的函数。

E. 安装openssl时报错

应该是执行config时出错了。可以这样执行:

./Configure --prefix=/安装目录 os/compiler:arm-linux-gcc(交叉编译工具)

然后检查一下Makefile,如果Make之后编译工具不对,需要手动修改一下
CROSS_COMPILE= arm-linux-
CC= $(CROSS_COMPILE)gcc
然后再试试

F. jdk nginx. redis 在arm和x86要分别编译

一、注意openssl和pcre只需要把源码解压缩,不需要单独交叉编译!
开始的时候不知道,傻傻的把这两个库弄半天把它们编译过去了。谁知道nginx的--with-pcre和--with-openssl选项,指定的是这两个库源代码的路径,并非安装路径!nginx的编译系统只会从/usr、/usr/local等少数几个目录查找是否有预编译的pcre、zlib、openssl等库。对于交叉编译,直接把交叉编译后的pcre等安装在/usr、/usr/local显然不合适,因此需要使用--with-pcre和--with-openssl指定源代码的位置

二、交叉编译nginx
在x64 linux上面编译非常简单的nginx,没想到在交叉编译的时候巨多坑。下面一个configure是编译成功的配置

进入/usr/local/src目录,创建nginx文件夹。入刚创建的nginx目录,下载nginx的tar包,解压,进入解压生成的目录,进行配置(后面有补充,建议通读一遍)编译安装查找安装路径,在执行make编译时,可以添加要编译的参数,已安装完成,比如我现在要新增 http_stub_status_mole 模块参数,那么我只要把该参数添加进去然后重新编译即可,需要注意的是原先编译过的参数也要加进来。
进入nginx的安装目录,因为我安装的时候没有添加任何参数,所以这里我只需要执行

我这里只需要这一个模块,如果你安装的nginx还使用其他的模块,记得在上面的编译命令中加上。
另外,这里只能 make 千万别 make install,否则就覆盖安装了。

  • make完成后,在源码目录下会有一个objs目录,objs目录下就多了个nginx,这个就是新版本的程序了;

  • 然后将objs目录下的nginx替换之前已经安装过的nginx(建议将旧的nginx程序做下备份)


G. 海思平台配置toolchain.cmake

交叉编译,在我们的host宿主机器稿知郑上需要生成target目标机器的程序, 使用CMake的Toolchain管理这里的各种环境变量和配置,就很好.

CMake给交叉编译预留了一个变量-- CMAKE_TOOLCHAIN_FILE , 它定义了一个文件的路径, 这个文件就是 toolchain ,我们可以在里面配置 C_COMPILER , CXX_COMPILER ,如果用Qt的话需要更改 QT_QMAKE_EXECUTABLE 以及如果用 BOOST 的话需要更改的 BOOST_ROOT (具体查看相关 Findxxx.cmake 里面指定的路径), 因此,这个 toolchain 内嵌了一系列需要改变并且需要set的交叉环境的设置.

下面归纳一些比较重要的:

下面是一个常规的配置

这样就完成了相关toolChain的编写,之后,你可以灵活的选择到底采用宿主机版本还是开发机版本,之间的区别仅仅是一条 -DCMAKE_TOOLCHAIN_FILE=./cross.toolChain.cmake ,更爽的是,如果你有很多程序需要做转移,但目标平台是同一个,你仅仅需要写一份toolChain放在一个地方,就可以给所有工程使用。

稍微大一点的项目都会用到一些外部依赖库或者tool,CMake提供了 FIND_PROGRAM() , FIND_LIBRARY() , FIND_FILE() , FIND_PATH() and FIND_PACKAGE() 等命令来进行外部依赖的搜索查找。

但是有个问题,假如我们在给一个ARM处理器的移动设备做交叉编译,其中需要寻找 libjpeg.so ,假如 FIND_PACKAGE(JPEG) 返回的是 /usr/lib/libjpeg.so ,那么这就会有问题,因为找到的这个 so 库只是给你的宿主机系统(例如一个x86的Ubuntu主机)服务的,不能用于Arm系统。所以你需要告诉CMake去其它地方去查找,这个时候你就需要配置以下的变量了:

在工程中一般通过如下步骤, 进入工程文件, 创建 arm-himix200-linux.cmake 文件, 内容是:

然后创建build文件夹, 进行编译(注意, 需要指定 CMAKE_MAKE_PROGRAM , 不指定的话好像编译有问题...):

在我的 toolchain 文件中,我指定:

因为我项猛戚目中 CMakeLists.txt 中需要查找 OpenSSL 和 curl , 因此会用到CMake自带的 FindOpenSSL.cmake 和 FindCurl.cmake 两个脚本, 他们会用到 Findxxx 命令, 会去我指定的目录去搜键颂索对应的库

https://www.cnblogs.com/rickyk/p/3875334.html
http://www.cmake.org/Wiki/CMake_Cross_Compiling

H. OpenSSL的编译和使用

个人博客地址: https://blog.yookingh.cn
该文章地址: https://blog.yookingh.cn/dev/201215-openssl.html

从NDK r19开滑知始,由于gcc兼容clang的编译方式有问题,该版本乎高已经移除了相关gcc文件,所以用老方法交叉编译Openssl的时候,会提示找不到gcc文件。

参考: https://blog.csdn.net/zoujin6649

build-android-single.sh 脚本文件及注释如下岁让尺

执行脚本

修改脚本为 循环编译 ,编译所有需要的文件

build-android-all.sh 脚本文件内容如下

执行脚本方法同上,如为第一次执行(即没有Makefile文件),仍需要执行 ./config 循环编译无需执行 make clean

参考: https://blog.csdn.net/iamadk

Python 脚本内容

创建编译执行脚本

执行编译脚本同r15,第一次需要执行 ./config 生成Makefile,第二次或以上需要清除make记录即 make clean ,接下来依旧是创建 循环编译 脚本

I. 交叉编译openssl for arm-linux-androideabi-gcc工具链

在Ubuntu 16.04 64bit上搭建的android编译环境交叉编译SDK的openssl-1.0.2j生成库,但是使用ndk-build时,却出现了“Fatal error: Invalid -march= option: `armv5te'”错误

android-ndk-r10e 的交叉编译链在Ubuntu 16.04 32bit系统上没有问题,后来网络搜索后尝试了各种方法还是找不到问题所在,最后在 CSDN问答 这边找到了相关描述,果不其然,升级了交叉编译链 android-ndk-r12b 后编译就通过了。

J. 如何对lighttpd进行交叉编译安装并配置lighttpdweb服务器

1. 编译、安装
1.1. 先到lighttpd官网下载对应版本的软件包:
http://www.lighttpd.net/
我下载的是 lighttpd-1.4.30.tar.gz
1.2. 将压缩包解压到任意目录(我的是 /root/Desktop/common)得到文件夹 lighttpd-1.4.30
1.3. 在文件夹 lighttpd-1.4.30 中创建shell脚本,命名为:configure-arm.sh
1.4. 在shell脚本 configure-arm.sh 中输入如下代码:
#! /bin/sh
CC=arm-linux-gcc
AR=arm-linux-ar LD=arm-linux-ld RANLIB=arm-linux-ranlib
STRIP=arm-linux-strip ./configure --prefix=/opt/web/lighttpd-1.4.30-arm
--host=arm-linux --build=i686-pc-linux --disable-FEATURE --enable-shared
--disable-static --disable-lfs --disable-ipv6 --without-PACKAGE
--without-valgrind --without-openssl --without-kerberos5 --without-pcre
--without-zlib --without-bzip2 --without-lua

1.5. 打开控制台,cd进入 lighttpd-1.4.30 目录
1.6. 给 configure-arm.sh 文件添加可执行属性,执行命令:
chmod +x configure-arm.sh
1.7. 配置lighttpd,执行命令:
./configure-arm.sh
1.8. 编译lighttpd,执行命令:
make
1.9. 安装lighttpd,执行命令:
make install

热点内容
中兴服务器登录地址 发布:2025-07-15 04:02:47 浏览:987
手提箱怎么改密码 发布:2025-07-15 03:55:47 浏览:218
did脚本 发布:2025-07-15 03:55:12 浏览:963
残留溶剂线性浓度如何配置 发布:2025-07-15 03:54:31 浏览:134
部落冲突好号密码是什么 发布:2025-07-15 03:48:45 浏览:970
存储气瓶 发布:2025-07-15 03:48:10 浏览:992
数据解锁密码有什么用 发布:2025-07-15 03:35:27 浏览:195
腾讯公认的密码是多少 发布:2025-07-15 03:34:44 浏览:625
代码txt怎么改脚本 发布:2025-07-15 03:30:20 浏览:289
声道数增加存储容量也相应 发布:2025-07-15 03:16:19 浏览:272