IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 交叉编译 openssl libssh2 -> 正文阅读

[系统运维]交叉编译 openssl libssh2

要使用sftp功能,从网上找了QSsh-master代码在centos上编译,结果qt报错

../../QSsh-master/src/3rdparty/botan/botan.cpp:1127:43: error: impossible constraint in 'asm'

从网上找了没有找到解决办法。就改用libssh2来实现sftp功能在centos6.8上的交叉编译环上编译openssl,执行./configure 失败报错Can't locate IPC/Cmd.pm,百度了下

报错原因:缺少IPC/Cmd.pm模块

解决方法:

安装perl-CPAN,

yum install -y perl-CPAN

嫌弃安装软件麻烦,决定把交叉编译环境整到ubuntu 16 32位上。

新建虚拟机,装好系统 ,安装qt环境,编译一个嵌入式程序测试,报错找不到编译器,我设置了环境变量PATH,但就是报错,又百度,说编译其他平台程序 ,环境变量设置是修改/etc/environment文件,后加入后,终于可以编译了。

接着要交叉编译openssl , libssh2 两个

下载源码,先是编译openssl,

先apt-get install libssl-dev

否则报错configure: error: OpenSSL Crypto library not found

./Configure linux-armv4 --cross-compile-prefix=arm-hisiv400-linux- --prefix=/home/mission/sftp/openssl-3.0.1

第一个linux-armv4是嵌入式平台

--cross-compile-prefix是加上交叉编译的前缀,makefile则会自动变成arm-hisiv400-linux-g++等,

且产生的makefile也是能直接使用。

编译好后,再编译libssh2

./configure ?CC=arm-hisiv400-linux-g++ --prefix=/home/mission/sftp/libssh2-1.10.0 指定编译器后,报错?

checking whether we are cross compiling... configure: error: in `/home/mission/sftp/libssh2-1.10.0/libssh2-1.10.0':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.

后改成./configure ?CC=arm-hisiv400-linux-g++ --prefix=/home/mission/sftp/libssh2-1.10.0 --host=arm-linux

又报错

configure: ERROR: No openssl crypto library found!
No libgcrypt crypto library found!
No mbedtls crypto library found!
No wincng crypto library found!

Specify --with-crypto=$backend and/or the neccessary library search prefix.

Known crypto backends: auto, openssl, libgcrypt, mbedtls, wincng
configure: error: Required dependencies are missing!
又改./configure ?CC=arm-hisiv400-linux-g++ --prefix=/home/mission/sftp/libssh2-1.10.0 --host=arm-linux --with-libssl-prefix=/home/mission/sftp/openssl-3.0.1

加上了自己编译的openssl的路径,终于好了。

但make时又报错。找不到libatomic.so,把交叉编译环境里的这个库找到放到openssl的库一起,再编译

/opt/hisi-linux/x86-arm/arm-hisiv400-linux/bin/../lib/gcc/arm-hisiv400-linux-gnueabi/4.8.3/../../../../arm-hisiv400-linux-gnueabi/bin/ld: warning: libssl.so.3, needed by ../src/.libs/libssh2.so, not found (try using -rpath or -rpath-link)
/opt/hisi-linux/x86-arm/arm-hisiv400-linux/bin/../lib/gcc/arm-hisiv400-linux-gnueabi/4.8.3/../../../../arm-hisiv400-linux-gnueabi/bin/ld: warning: libcrypto.so.3, needed by ../src/.libs/libssh2.so, not found (try using -rpath or -rpath-link)
../src/.libs/libssh2.so: undefined reference to `EVP_MD_CTX_free@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_ripemd160@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_PKEY_derive@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_PKEY_get1_EC_KEY@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_PKEY_get1_DSA@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `BIO_ctrl@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_PKEY_free@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `RSA_get0_factors@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `HMAC_Final@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_PKEY_CTX_new_id@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_sha256@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_DigestSignInit@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `ECDSA_SIG_set0@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EC_KEY_get0_public_key@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `ENGINE_load_builtin_engines@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EC_KEY_free@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `BN_mod_exp@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EC_KEY_new_by_curve_name@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_PKEY_keygen_init@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_PKEY_get_raw_private_key@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_sha1@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `ECDSA_SIG_free@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_DigestInit@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `RSA_size@OPENSSL_3.0.0'
../src/.libs/libssh2.so: undefined reference to `EVP_PKEY_derive_init@OPENSSL_3.0.0'

参考网上别人的应该是没有加上库路径

又改./configure ?CC=arm-hisiv400-linux-gcc --prefix=/home/mission/sftp/libssh2-1.10.0 --host=arm-linux --with-libssl-prefix=/home/mission/sftp/openssl-3.0.1 LDFLAGS="-Wl,-rpath-link,/home/mission/sftp/openssl-3.0.1/lib",终于好了

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 09:04:54  更:2022-04-30 09:07:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:29:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码