windows平台上用arm-none-linux-gnueabi-g++4.6.3交叉编译websocket++

原创 2016年03月31日 08:34:25
          工作中遇到在arm板上linux系统里运行嵌入websocket++的程序,即程序里需要引入websocket++开源头文件,编译器是windows平台上的


arm-none-linux-gnueabi-g++4.6.3.exe。

1.编译boost库:

          由于websocket++本身是依赖于boost库的,所以需要先在windows上安装boost库头文件,而且还主要依赖其中的libboost_system库(boost中有部分模块是需要编译生成库之后才能用来给其它程序链接的,而libboost_system就是需要编译的库之一),所以首先要先编译boost,只需要编译出libboost_system库就行,暂不必全部编译,太浪费时间。但由于目标平台是linux,所以libboost_system库自然是需要linux平台上的so库,不会是windows平台上的lib和dll。

          开始本想按http://blog.csdn.net/jwybobo2007/article/details/7242307博主方法直接在windows平台上用arm-none-linux-gnueabi-g++编译boost,按要求修改了project-config.jam文件中“using gcc : arm : arm-none-linux-gnueabi-gcc ; ”,但编译时却总报“unrecognized command line option '-mthreads'”,无奈,知识有限,不知怎么解决,所以放弃了,转向linux平台。

          于是得使用虚拟机上的linux系统ubantu来编译,开始是用的普通的g++4.8编译来编译boost的system库,编译完libboost_system.so.1.55.0后拿到windows平台上链接,报不兼容的库文件,才想起这个库是intel32程序库,不是目标arm库,于是又去linux系统安装交叉编译器arm-none-linux-gnueabi-g++4.6.3.bin,用它来再次编译出arm上的libboost_system.so.1.55.0库,这次回到windows平台上使用才链接成功。步骤如下:

          命令行中运行:./bootstrap.sh   #此步生成b2、bjam、project-config.jam文件

          修改project-config.jam中:using gcc : arm : arm-none-linux-gnueabi-g++ ;          #此步arm-none-linux-gnueabi-g++最好用全路径

          命令行中运行:./bjam --with-system link=shared variant=released threads=multi           #b2和bjam貌似是一样的。


2.arm-none-linux-gnueabi-g++4.6.3编译websocket++程序:

         websocket++库本身都是模板,不需要编译,可在自己的项目中直接引用就行。因websocket++依赖boost,而boost里有很多地方用到c++11的新特性关键字noexcept,可能是arm-none-linux-gnueabi-g++4.6.3不支持吧,总报错,于是在引用websocket++头文件之前要先定义宏:#define BOOST_NO_CXX11_NOEXCEPT,以去掉noexcept关键字。然后编译成功.



        


arm-none-linux-gnueabi交叉工具链安装 ,介绍,区别总结

1.arm-none-linux-gnueabi-gcc下载 http://www.veryarm.com/arm-none-linux-gnueabi-gcc arm...
  • dldw8816
  • dldw8816
  • 2015年05月26日 09:57
  • 2922

websocket初探

黑夜啊,一无所有,请给我一点灵感!麻蛋,我又不能做湿人!websocket是什么,我就不介绍了,能看到这篇文章的,都是会用Google的人咯。本来好好的一个东西,Linux上很多好用的SDK,偏偏本人...
  • u011414997
  • u011414997
  • 2016年05月24日 01:10
  • 1599

C++ websocket库

1、搭建好boost http://blog.csdn.net/sdsabc2000/article/details/52461139 2、下载websocket++ https://g...
  • bai596140538
  • bai596140538
  • 2016年12月06日 13:48
  • 913

eclipse在windows下的arm交叉编译环境搭建

之前的程序都是别人给好了的, 拿到虚拟机里的linux环境中编译一下,然后再拿出来烧写. 感觉这样很不方便, 如果在win下就可以编译调试那很多情况下虚拟机都不需要开了.为此在网上查找资料来用ecli...
  • gongyuan073
  • gongyuan073
  • 2013年10月11日 17:48
  • 8788

基于 websocket 实现远程实时日志 在浏览器中查看设备的运行日志

本文介绍一个基于websocket实现的远程实时日志系统,可以通过浏览器查看远程移动设备的实时运行日志。 系统由三个部分组成: 1. 服务器:与移动设备和浏览器建立websocket连接,将移动设...
  • e28sean
  • e28sean
  • 2013年02月01日 15:18
  • 11883

arm-none-linux-gnueabi交叉工具链安装 ,介绍,区别总结

1.arm-none-linux-gnueabi-gcc下载 http://www.veryarm.com/arm-none-linux-gnueabi-gcc arm...
  • dldw8816
  • dldw8816
  • 2015年05月26日 09:57
  • 2922

在MSYS2+MinGW环境下编译arm-none-eabi工具链

MSYS和MINGW都提供了各自的gcc工具链,但是没有arm平台的交叉编译环境,所以自己尝试编译一个单纯的arm-none-eabi工具链。...
  • qq446252221
  • qq446252221
  • 2017年08月08日 17:24
  • 248

eclipse在windows下的arm交叉编译环境搭建

之前的程序都是别人给好了的, 拿到虚拟机里的linux环境中编译一下,然后再拿出来烧写. 感觉这样很不方便, 如果在win下就可以编译调试那很多情况下虚拟机都不需要开了.为此在网上查找资料来用ecli...
  • gongyuan073
  • gongyuan073
  • 2013年10月11日 17:48
  • 8788

在windows环境下,使用Eclipse和gcc-Linaro工具链,对BeagleBone进行交叉编译和远程部署

在windows环境下,使用Eclipse和gcc-Linaro工具链,对BeagleBone进行交叉编译和远程部署...
  • zsy19881226
  • zsy19881226
  • 2015年07月19日 09:25
  • 851

WebSocket 编译指南

本次编译的 WebSocketpp 的vs08版本,这个说法其实不准确。 确切的说法是:因为开发用的是vs08,所以WebSocketpp需要的一些其他库,也必须是vs08版本。 【一】准备好原...
  • hellokandy
  • hellokandy
  • 2017年04月27日 20:15
  • 1322
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows平台上用arm-none-linux-gnueabi-g++4.6.3交叉编译websocket++
举报原因:
原因补充:

(最多只允许输入30个字)