【笔记】unix系统下,多个静态库链接到一个可执行程序后,执行时出现莫名奇妙的问题
来源:互联网 发布:wan 微型端口 ip 编辑:程序博客网 时间:2024/05/22 01:45
前提说明:
web_transmit_service是一个传输管理程序,内嵌rayvision引擎和aspera引擎,其中引擎是静态库,两个引擎封装的接口特别相似
出现问题:
vector异常,push_back()执行5次,但size()却是3,而且遍历出的结果与push进去的内容是不一样的,
另外,只链接一个引擎时就是正常的,同时链接两个引擎才会执行异常,
而且,windows下是正常的,虽然它用的是动态库(只是表达代码本身没问题的意思)
问题处理:
mac下,
将引擎由静态库改成动态库,不再有异常
linux(Ubuntu14.4、CentOS6.5)下,
将引擎由静态库改成动态库,也不再有异常
但由于动态库依赖,导致程序安装比较麻烦(安装机器缺少依赖库),所以,还是保持静态库,不过编译引擎时去掉了“-O1”的编译优化项
----------------------------------------------------------------------------------
其他:
mac下,编译aspera引擎时,发现IBM给的静态库和我的代码不能正常链接,原因是他们的编译选项中有“-stdlib=libstdc++”这个选项,而我的代码用的是“-std=c++11”,两个用的底层的STL是不一样的,导致一系列的链接问题
其实,我们默认的编译选项是“-stdlib=libc++”,而它用的是默认的STL,而“-stdlib=libstdc++”,用的是另一个版本的STL,所以,才有问题。(-std=c++11也相当于内嵌有一个"-stdlib=libc++"这样的选项,不管我表达的对不对,我就是想表达这层意思,用的是默认的STL)
最终,IBM那边重新编译了一个静态库给我(改用编译选项“-stdlib=libc++”),接着就出现最前面的执行异常的问题。
- 【笔记】unix系统下,多个静态库链接到一个可执行程序后,执行时出现莫名奇妙的问题
- delphi7莫名奇妙编译出现的问题
- eclipse出现莫名奇妙的问题
- 莫名奇妙的问题
- 一个莫名奇妙问题的解决,数据大了后form不提交了
- xfire + myeclipse 6 出现的莫名奇妙的问题
- 出现莫名奇妙的问题之myeclipse无法自动编译
- 【 程序运行时出现莫名奇妙的异常现象的原因之总结 】
- unix下静态库的链接顺序问题(zz)
- VC2005编译出现莫名奇妙的错误
- VS出现了莫名奇妙的字体
- 程序链接静态库,静态库再链接另一个静态库,出现未定义的问题?
- 编译链接正常,但是应用程序未运行到自己的代码就莫名奇妙崩溃!
- android的一些莫名奇妙的问题
- ATL动态库调试总是链接到其它路径下的可执行程序
- java编译的莫名奇妙问题总结
- java编译的莫名奇妙问题总结
- java编译的莫名奇妙问题总结 .
- 【?】【9907】合唱队形
- 读书是一门艺术
- CentOS 7 yum方式快速安装MongoDB
- php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
- 【Alogrithm】迪杰斯特拉算法
- 【笔记】unix系统下,多个静态库链接到一个可执行程序后,执行时出现莫名奇妙的问题
- 精心整理python自动化测试小技巧一 (最好ctrl+f直接搜关键字)
- IOS-oc中label标签添加点击事件并跳转页面
- SpringMVC 直接处理.html/.htm 文件
- iOS 正则表达式判断纯数字以及匹配11位手机号码
- 学习laravel框架二:开始
- 算法学习-字符串循环左移
- Seeking Wisdom,如何系统地提高自己的智慧?
- 调用存储过程