aCC编译器怪异的-mt参数

在HP安腾主机上编译工作流引擎时遇到频繁coredump问题,通过添加-mt参数解决,涉及多线程库引用导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前一段做一个工作流的应用项目,需要在HP安腾主机上编译工作流引擎,编译后引擎经常无故coredump,而且当掉的地方不确定。仔细查看代码确认不是程序的bug。问了一下同事,说是HP的C++模板库有bug,但上网查了查没有这方面的补丁,确认应该不是C++库的问题。既然不是应用的问题也不是C++库的问题,为什么引擎会当掉呢?在Google上漫无边际的浏览,找到了这个,开始怀疑是makefile的编译器参数的问题,但是引擎本身不是多线程的,也没有引用pthread库。抱着“死马当活马医”的态度加上了“-mt”参数,makefile的CFLAG改为+DD64 -AA -D_REENTRANT -mt -w +Z -Wl,+s -D__BIGMSGQUEUE_ENABLED重新编译引擎,一切都正常了。

 

虽然引擎不coredump了,但疑问一直在,又在网上找了找,发现了这个,其中这段

编译器 aCC选项

• 如果多线程程序,需要使用-mt编译选项

• 如果单线程程序,链接了第三方的库(libclntsh.so),也通常需要-mt

• 使用C++新标准,要使用-AA编译选项

• -AA & -AP

 

我们的程序虽然不是多线程的,但是引用 了oracle的库libclntsh.so,所以也需要加-mt,文档也没有说明原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值