• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++编译变更stlport到使用g++的stl经验总结

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

. 花了几天时间,需要把经验给记下来。

1. 需要支持C++11的编译器,最方便的方式就是

yum -y install devtoolset-6

在/usr/local/bin中增加gcc6.sh

#!/bin/bash

scl enable devtoolset-6 bash

如果把这个放到~/.bashrc中,可能登录时会造成系统资源不足,我试试放在~/.bash_profile中。

CMakeLists.txt中增加:

macro(use_cxx11)
if (CMAKE_VERSION VERSION_LESS "3.1")
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set (CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}")
endif ()
else ()
set (CMAKE_CXX_STANDARD 11)
endif ()
endmacro(use_cxx11)

use_cxx11()

 


原来stlport里用的是hash_map,需要更改为g++ stl中的unordered_map,全局替换就行了。

2. 依赖的第三方库原来使用stlport编译出来的。比如,把libcppunit.a拷贝到tmp/t下,

ar x libcppunit.a

会发现有一个libstlport.a这个库。放弃这个libcppunit.a,
yum -y install cppunit

如果下载源码:是https://sourceforge.net/projects/cppunit/files/cppunit/1.12.1 中的地址。

CMakeLists.txt中,libcppunit.a 改为libcppunit.so, 并且把原来的.a从原来位置挪开。

还发现
#define RESULT2ERR {ostringstream os;os << result;lastError = os.str();}
这个报编译错误,是result是XmlRpcValue类型,是libXmlRpc中的。

下载源码:https://gigenet.dl.sourceforge.net/project/xmlrpcpp/xmlrpc%2B%2B/Version%200.7/xmlrpc%2B%2B0.7.zip,然后编译,解决编译错误,主要是有些文件没有包含 string.h。生成的是.a,决定用.so,修改makefile。

CPPFLAGS增加:-fPIC
CPPFLAGS = -I$(SRC) -fPIC

增加目标:

$(SO): $(OBJ)
$(CXX) -shared -o $@ $(OBJ)

测试文件Validator.cpp对编译错误做修改:

// s += params[0][params[0].size()-1]; //tj com, cannot compile
s += std::string(params[0][params[0].size()-1]);

把编译出来的.so拷贝到/usr/local/lib下,把src/*.h拷贝到/usr/local/include/xmlprc。在CMakeLists.txt中做相应的修改,老的.a挪走。

3. 对libXmlRpc.a做测试时,需要

MY_LIBS   :=  $(MY_LIBS)  -Wl,-Bstatic -L/usr/local/lib -lXmlRpc -Wl,-Bdynamic  -lm 

注意-lm这样写,否则会报错。

CMakeLists需要增加:

LINK_DIRECTORIES(/usr/local/lib)

整个问题,从google上搜索找不到有效的答案。主要是需要顿悟: cppunit是用了stlport才编译出来的,而我们不想使用stlport。突然领悟了这个,问题才最终得到解决。

4. 中间担心cmake有问题,下载cmake3.10.x版本,并且安装。安装时指定 
./configure --bindir=/usr/local/cmake ,争取不要把缺省的cmake2.8给覆盖了。


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
6让我们的C#程序开始做点数学运算发布时间:2022-07-13
下一篇:
C#计算加减乘除发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap