版本:

libxml2-2.9.1

openssl-1.0.1e

libssh2-1.4.3

linux下的开源软件的编译比较统一,一般分为如下几步

./configure;make;make install

如果是交叉编译需要考虑,1.指定交叉编译工具的PATH 2.指定交叉编译工具CC

3.交叉编译的架构host 4.编译输出目录

如下脚本:

#!/bin/bashexport PATH=$PATH:/opt/ppc/eldk4.2/usr/bin
PREPATH=${PWD}
rm ${PREPATH}/Output -rf
mkdir ${PREPATH}/Outputchmod +x configure./configure \CC=ppc_85xxDP-gcc \--host=powerpc-linux \--prefix=${REPATH}/Output
make
make install

有的configure配置的时候默认includedir和libdir是根据prefix来的
 --includedir=DIR        C header files [PREFIX/include]
所以会找不到库和头文件

一、libxml2编译

按照上面脚本,改好相关参数,没有出现问题

二、openssl编译

这套软件就没有按套路出牌,出现了Configure和config两个脚本

1.配置

./Configure \--prefix=/opt/ppc/eldk4.2/ppc_85xxDP/usr \os/compiler:ppc_85xxDP-gcc   \shared ./config \linux-ppc \--prefix=/opt/ppc/eldk4.2/ppc_85xxDP/usr \--openssldir=/opt/ppc/eldk4.2/ppc_85xxDP/usr/openssl \CC=ppc_85xxDP-gcc   \AR=ppc_85xxDP-ar  \RANLIB=ppc_85xxDP-ranlib \shared  \no-asm 

然有两个脚本,但还是不完善,所以指定了一大堆工具和路径

os/compiler:ppc_85xxDP-gcc 指定交叉编译器和架构类型

虽然加了shared参数,但最终还是没生成动态库
2.修改Makefile

添加如下定义来指定交叉编译

CROSS_COMPILE= ppc_85xxDP- 
经过这两步才可以make和make install,还是说的,这个库的编译为什么感觉这么low?

三、libssh2

这个源码包里有configure,编译结果仿佛呼之欲出...

1.配置

./configure \CC=ppc_85xxDP-gcc \--host=powerpc-linux \--prefix=/opt/ppc/eldk4.2/ppc_85xxDP/usr \--includedir=/opt/ppc/eldk4.2/ppc_85xxDP/usr/include \--libdir=/opt/ppc/eldk4.2/ppc_85xxDP/usr/lib  \--disable-examples-build
#   --with-libssl-prefix=/opt/ppc/eldk4.2/ppc_85xxDP/usr
#   --without-libgcrypt \
make
make install

经过一些乱七八糟的错误后,建立了上面的配置

我觉得已经无懈可击了,但我还是卡在了下面的错误上

make[1]: Entering directory `/home/kevin/works/projects/ACCUMULATION/xml2_openssl/libssh2-1.4.3/tests'
/bin/bash ../libtool --tag=CC   --mode=link ppc_85xxDP-gcc  -g -O2   -o ssh2 ssh2.o ../src/libssh2.la
libtool: link: ppc_85xxDP-gcc -g -O2 -o ssh2 ssh2.o  ../src/.libs/libssh2.a -L/opt/ppc/eldk4.2/ppc_85xxDP/usr/lib -lssl -lcrypto -lz
../src/.libs/libssh2.a(openssl.o): In function `aes_ctr_cleanup':
/home/kevin/works/projects/ACCUMULATION/xml2_openssl/libssh2-1.4.3/src/openssl.c:306: undefined reference to `EVP_CIPHER_CTX_get_app_data'
../src/.libs/libssh2.a(openssl.o): In function `aes_ctr_do_cipher':
/home/kevin/works/projects/ACCUMULATION/xml2_openssl/libssh2-1.4.3/src/openssl.c:267: undefined reference to `EVP_CIPHER_CTX_get_app_data'
../src/.libs/libssh2.a(openssl.o): In function `aes_ctr_init':
/home/kevin/works/projects/ACCUMULATION/xml2_openssl/libssh2-1.4.3/src/openssl.c:257: undefined reference to `EVP_CIPHER_CTX_set_app_data'
../src/.libs/libssh2.a(openssl.o): In function `_libssh2_cipher_crypt':
/home/kevin/works/projects/ACCUMULATION/xml2_openssl/libssh2-1.4.3/src/openssl.c:192: undefined reference to `EVP_Cipher'
collect2: ld returned 1 exit status
make[1]: *** [ssh2] Error 1
make[1]: Leaving directory `/home/kevin/works/projects/ACCUMULATION/xml2_openssl/libssh2-1.4.3/tests'
make: *** [install-recursive] Error 1

提示未定义的函数,于是查找了一下库里的内容

kevin@fzs:~/works/projects/ACCUMULATION/xml2_openssl/libssh2-1.4.3$ readelf -s /opt/ppc/eldk4.2/ppc_85xxDP/usr/lib/libssl.a |grep EVP_Cipher20: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND EVP_Cipher36: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND EVP_CipherInit_ex45: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND EVP_Cipher38: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND EVP_CipherInit_ex52: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND EVP_Cipher18: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND EVP_Cipher

明明有啊,为什么提示找不到,为什么?
莫名其妙的卡了一整天

最后我发现在/opt/ppc/eldk4.2/ppc_85xxDP/usr/lib下面有个libssl.so

原来,工具链里面有个老的libssl动态库,感觉到恶意后,删除

编译通过了,又学到了一点,程序编译的时候默认链接动态库

linux 交叉编译 libxml2,openssl,libssh2相关推荐

  1. 38.linux下安装openssl:测试evp、md5加密解密

    目录 一:linux环境安装openssl库: 二:编译安装到/home/aston/huawei/openssl-1.1.1d/install_lib文件夹: 三:测试openssl加密功能: 四: ...

  2. Linux 交叉编译简介

    Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...

  3. crt证书linux使用,linux下使用openssl生成https的crt和key证书

    x509证书一般会用到三类文,key,csr,crt Key 是私用密钥openssl格,通常是rsa算法. Csr 是证书请求文件,用于申请证书.在制作csr文件的时,必须使用自己的私钥来签署申,还 ...

  4. linux下利用openssl来实现证书的颁发(详细步骤)--转载和修改

    原文地址:http://www.cnblogs.com/firtree/p/4028354.html linux下利用openssl来实现证书的颁发(详细步骤) 1.首先需要安装openssl,一个开 ...

  5. Arm Linux 交叉编译(交叉编译是什么?CROSS_COMPILE)(交叉编译工具链【待更】)

    文章目录 交叉编译 1.编译 2.本地编译 3.交叉编译 交叉编译工具链 交叉编译 在嵌入式系统开发中,经常会听到一个词:交叉编译.到底什么是"交叉编译"呢?为什么要使用" ...

  6. linux top交叉编译_Linux 系统下ARM Linux交叉编译环境crosstool工具

    Linux系统下ARM Linux交叉编译环境的建立目前流行的有三种途径. 一.使用别人编译好的开发工具链本文引用地址:http://www.eepw.com.cn/article/201611/31 ...

  7. linux top交叉编译_ARM Linux交叉编译工具链的制作

    本次是在VMWare虚拟机里安装了CentOS5.2操作系统,并在上面编译自己的ARM交叉编译工具链,下面是相应的步骤: 首先下载crosstool0.43源码包(crosstool-0.43.tar ...

  8. Linux下libxml2编程基础

    Linux下libxml2编程基础 一.libxml2的简介 xml是一个实现读.创建.以及操作xml数据功能的C语言库.并且支持XPATH查询,以及部分的支持XSLT转换等的功能. libxml2的 ...

  9. linux 运行ca.crt,linux下使用openssl生成 csr crt CA证书,opensslcsr

    linux下使用openssl生成 csr crt CA证书,opensslcsr 本文主要借鉴和引用了下面2个地址的内容,然后在自己的机器上进行了测试和执行,并做了如下记录. ref: http:/ ...

最新文章

  1. shell的数字、字符串处理
  2. JavaScript实时更新中国标准时间
  3. tablednd保存 php,jqgrid中使用tableDnd插件,jqgridtablednd插件
  4. Asp.Net微型服务器使用次数统计
  5. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java
  6. javascript之基本概念
  7. 手把手教你java快速过滤关键词
  8. hyperworks安装教程linux,HyperWorks安装说明.ppt
  9. 六、Python之三元表达式、列表推导式、生成器表达式
  10. Fixed the bug:while running alert/confirm in javascript the chrome freezes
  11. 超有意思的代码注释_程序员搞笑的代码注释:谁的代码注释我都不服,就服你的...
  12. 纹理特征描述之灰度差分统计特征(平均值 对比度 熵) 计算和比较两幅纹理图像的灰度差分统计特征 matlab代码实现
  13. 新型恶意软件—— Grizzly攻击Telegram
  14. 企业如何建立强大的绩效管理系统
  15. Android 测试点归纳总结
  16. ldap 身份认证 概念和原理介绍
  17. androd欢迎页播放视频和广告页面
  18. 汇编语言:写一个简单的音乐程序
  19. 七牛判断上传图片文件是否重复
  20. 计算机按键不灵怎么回事,电脑键盘失灵,教您电脑键盘失灵怎么办

热门文章

  1. 用 Flask 来写个轻博客 (11) — M(V)C_创建视图函数
  2. Openstack贡献者须知 2 — 社区工作运作 代码贡献流程
  3. MarkdownPad打开文档This view has crashed错误,内容不显示
  4. Altium Designer修改3D视图时PCB板的颜色
  5. STM32H7的FDCAN
  6. 让Keil生成汇编文件、bin文件
  7. shape(15,)与(15,1)的区别
  8. 跨域资源共享的10种方式(转)
  9. RAC对单实例DG redo大小日志修改
  10. 解读ASP.NET 5 MVC6系列(17):MVC中的其他新特性