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-non...

arm-none-linux-gnueabi,arm-none-eabi 与arm-eabi 区别

arm-none-linux-gnueabi 链接工具命名:     arch-vendor-(os-)abi 1、arm-none-linux-gnueabi (ARM architect...

Windows下使用Eclipse交叉编译ARM

Developing in C/C++ with Eclipse Indigo on Windows This article illustrates how to use Eclipse Indi...
  • ee230
  • ee230
  • 2014年11月10日 16:38
  • 8027

arm-none-eabi-gcc编译器的安装和相关配置

首先,下载gcc的源码:https://launchpad.net/gcc-arm-embedded/+download 其次: sudo apt-get install apt-src gawk ...

一步一步教你怎么编译GNU ARM GCC 交叉编译器 arm-none-eabi-gcc

首先,对于编译器这东西,我一向认为很高深,当然现在还是这么认为,呵,所以呢,一般都是用别人编译好的现成的编译好版本。可是最近因为要在windows下面编译u-boot的原因,因为找不到合适的arm编译...

一步一步教你怎么编译GNU ARM GCC 交叉编译器 arm-none-eabi-gcc (原发于:2012-07-23 23:53:32)

一步一步教你怎么编译GNU ARM GCC 交叉编译器arm-none-eabi-gcc Step by step teaching you how to build a GNU ARM GCC...
  • semilog
  • semilog
  • 2012年08月15日 20:10
  • 12754

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

1.arm-none-linux-gnueabi-gcc下载 http://www.veryarm.com/arm-none-linux-gnueabi-gcc arm...

arm-none-linux-gnueabi-gcc下载

arm-none-linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,包括...
  • ee230
  • ee230
  • 2014年11月26日 11:58
  • 11550

共享文件夹内编译报”Value too large for defined data type”错误的解决办法

【错误描述 】如题编译时报Value too large for defined data type错误,并且将程序拷贝到虚拟机内部编译时是没有错误的(或者在其他机器上编译是没有问题的)【解决方法】挂...

VMware下的Linux系统中Windows的共享目录,不支持创建软连接

【问题】  在编译VMware下的Linux系统对从Windows中共享过来的文件,进行编译的时候,遇到:  ln: creating symbolic link XXXXXX : Operati...
  • lywzgzl
  • lywzgzl
  • 2015年01月19日 15:44
  • 1499
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows平台上用arm-none-linux-gnueabi-g++4.6.3交叉编译websocket++
举报原因:
原因补充:

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