一、设置交叉编译环境

  1. 在makefile所在目录(或源代码根目录)打开终端。
  2. 在终端中设置交叉编译所需的临时环境变量(也可写到配置文件中设置为全局环境变量),其中交叉编译工具链的名称和目录需要根据实际目录设置,每次编译前执行以下命令:
export CC=/home/hk/Desktop/sixin/gcc-4.9/bin/mips-linux-gcc
export CXX=/home/hk/Desktop/sixin/gcc-4.9/bin/mips-linux-g++
export AR=/home/hk/Desktop/sixin/gcc-4.9/bin/mips-linux-ar
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/hk/Desktop/sixin/gcc-4.9/lib

二、交叉编译sqlite3

1.设置交叉编译环境。

2.执行以下命令配置编译选项。 --prefix= 后面跟的是编译出来的库的安装目录,需要根据实际情况设置,--host= 后面的内容根据交叉编译工具设置。

./configure --host=arm-linux-gnueabihf --prefix=/home/hk/Desktop/moxa/sqlite-autoconf-3071600/out

make   #编译
make install #安装

三、交叉编译openssl

1.设置交叉编译环境。

2.执行以下命令配置编译选项。 --prefix= 后面跟的是编译出来的库的安装目录,需要根据实际情况设置。

  • 编译静态库,linux:'arm-linux-gnueabihf-gcc'arm-linux-gnueabihf-gcc根据交叉编译工具设置。

    ./Configure linux-elf-arm -DB_ENDIAN linux:'arm-linux-gnueabihf-gcc'  --prefix=[输出路径]
    make
    make install
  • 编译动态库

./config -fPIC no-asm -shared --prefix=/home/hk/Desktop/openssl-1.0.0/out

# 配置完成之后需要修改makefile,将makefile中的 -m64 删除。
make
make install

注意:尽量使用静态库,动态库有时会出错。

四、交叉编译libevent

1.设置交叉编译环境。

2.执行以下命令配置编译选项。 --prefix= 后面跟的是编译出来的库的安装目录,需要根据实际情况设置。

3.CPPFLAGS="-I/usr/local/Cellar/openssl/1.0.2h_1/include" 为openssl头文件目录,LDFLAGS=LDFLAGS="-L/usr/local/Cellar/openssl/1.0.2h_1/lib -lssl -lcrypto"是编译出来的openssl库目录,需要根据实际情况设置。

./configure --host=arm-linux CPPFLAGS="-I/usr/local/Cellar/openssl/1.0.2h_1/include" LDFLAGS="-L/usr/local/Cellar/openssl/1.0.2h_1/lib -lssl -lcrypto"  --prefix=/usr/local

make
make install

五、交叉编译 paho.mqtt.c ,需要先交叉编译 openssl

1.设置交叉编译环境。

2.修改makefile ,在129行添加如下,CFLAGS += -I后面的内容为openssl头文件目录,LDFLAGS += -L是编译出来的openssl库目录,需要根据实际情况设置。

# 修改makefile ,在129行添加如下, -I参数后面的内容为 交叉编译openssl库安装目录
CFLAGS += -I./../openssl-1.1.0g/install/include
LDFLAGS += -L./../openssl-1.1.0g/install/lib #修改后执行make命令编译
make

3.编译完成后,会在当前目录创建build目录,进入build目录,里面有一个output目录和一个版本头文件,output目录中存放着编译出来的库文件,examples和测试程序。

六、交叉编译 mosquitto

  1. 设置交叉编译环境。
  2. 修改源文件目录下的 config.mk文件。
    • WITH_TLS、WITH_TLS_PSK、WITH_SRV、WITH_UUID 、WITH_DOCS设置为 no
    • 在文件头部设置依赖的paho.mqtt.copenssl头文件和库目录,如下所示:
#  -I参数后面的内容为paho.mqtt.c库和openssl头文件目录,-L参数后面的内容为编译好的paho.mqtt.c库和openssl库目录 ,注意: 实际修改时需要不使用[]。
CFLAGS += -I[paho.mqtt.c源代码目录下的src目录] -I[openssl头文件目录]
LDFLAGS += -L[编译处的paho.mqtt.c库目录] -L[编译出来的openssl库目录] -lssl -lcrypto

Sqlite,libevent,openssl,mosquito交叉编译的更多相关文章

  1. 使用mingw 对libcURL,openSSL,zLib交叉编译

    使用mingw 对libcURL,openSSL,zLib交叉编译   将三个库解压到同一目录下 比如取目录名为 "source" 的目录   提前安装active-perl 配置 ...

  2. 关于openssl的交叉编译

    最近有个项目用到openssl,于是去openssl的官方网站上下载了最新的版本,v1.1.1b版本. 解压之后,发现配置编译,可以使用./config或者./Configure来完成. 网上也查了一 ...

  3. 更换Qt QtEmbedded库的版本出现问题及解决(交叉编译OpenSSL)

    近日将QtEmbedded库的版本由4.7.0更新到4.7.4.工具链并未改变,仍为 Target: arm-none-linux-gnueabiConfigured with: ......Thre ...

  4. OpenSSL 1.0.2e 3 Dec 2015

    目录: 1,交叉编译openssl 2,win32  vc9 编译 openssl 1,交叉编译openssl [原]交叉编译openssl不修改Makefile的方法 http://blog.chi ...

  5. openssl的移植

    下载openssl1.1并解压,进入openssl根目录,执行配置命令 ./Configure linux-armv4 --prefix=$(pwd)/__install 这里使用当前目录下的__in ...

  6. mosquitto/openssl 在RK3288上的编译以及MQTT客户端的代码示例

    1,依赖库openssl 的交叉编译 (1)配置编译器信息 setarch i386 ./config no-asm shared --cross-compile-prefix=arm-linux-a ...

  7. Martinjingyu的开发环境

    Mac Pro Book一台去年新款,最近这4年多折腾的东西总结下. Mac的包管理器首选HomeBrew,安装如下: ruby -e "$(curl -fsSL https://raw.g ...

  8. CentOS 5.5 下安装Countly Web Server过程记录

    CentOS 5.5 下安装Countly Web Server过程记录 1. 系统更新与中文语言包安装 2. 基本环境配置: 2.1. NodeJS安装 依赖项安装 yum -y install g ...

  9. 大数据应用日志采集之Scribe 安装配置指南

    大数据应用日志采集之Scribe 安装配置指南 大数据应用日志采集之Scribe 安装配置指南 1.概述 Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用.它 ...

随机推荐

  1. Excel中row函数的使用方法

    1.row函数的含义 1 row函数的含义 返回所选择的某一个单元格的行数. END 2.row函数的语法格式 1 row函数的语法格式 =row(reference) 如果省略reference,则 ...

  2. python3 列表的赋值和深浅拷贝

    '''列表赋值:不会创建新对象两个列表的内存地址一样'''# lst1 = ["apple", "banana", ["blueberry" ...

  3. Docker中运行Dockerfile时报错“cannot allocate memory”

    今天运行Dockerfile脚本时报错了,现记录下来: Step / : RUN -bin/myagent symlink /proc/mounts /var/lib/docker/overlay/2 ...

  4. [Python]Python 函数调用小例子

    函数定义: In [78]: def printme(str): ....: print str ....: return ....: 调用: In [79]: printme('This is Ji ...

  5. 移动端自动化测试-WTF Appium?

    手机App分为两大类,原生App(Native App)和混合APP(Hybrid App) 原生App(Native App) 原生App实际就是我们所常见的传统App开发模式,云端数据存储+App ...

  6. 一次Java内存泄漏调试的有趣经历

    人人都会犯错,但一些错误是如此的荒谬,我想不通怎么会有人犯这种错误.更没想到的是,这种事竟发生在了我们身上.当然,这种东西只有事后才能发现真相.接下来,我将讲述一系列最近在我们一个应用上犯过的这种错误 ...

  7. 【javascript】详解javaScript的深拷贝

        前言: 最开始意识到深拷贝的重要性是在我使用redux的时候(react + redux), redux的机制要求在reducer中必须返回一个新的对象,而不能对原来的对象做改动,事实上,当时 ...

  8. SpringBoot日记——Spring的安全配置-登录认证与授权

    安全是每个项目开发中都需要考虑的,比如权限控制,安全认证,防止漏洞攻击等. 比较常见的安全框架有:Apache的shiro.Spring Security等等,相信用shiro的用户群体更多,而sec ...

  9. 画了一张基于Spring Cloud的微服务系统架构图

  10. Log4net_配置

    Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以及在运行时控制信息的格式化和信息的写 ...