GNU文件使用platform_hpux_aCC.GNU(修改buildbits=64), config使用config-hpux-11.00.h, ACE版本5.4/5.5
编译选项未做任何变动
使用编译成功的库测试,发现Task activate线程会失败,单步调试跟到OS_NS_Thread.cpp文件中的ACE_OS::thr_create调用中
if(::thread_attr_init(&attr)!=0) return -1;
经验证,如果buildbits=32, 在32位下该调用则正常
请教下有经验的前辈,该问题是什么原因导致,是否是因为编译库的时候编译选项或者编译宏问题?

最新回复
64位处理一些数据类型的时候,和32位有差别。
理由如下,看样子只有在distrib为1的时候,才会选择正确的库吧?
ifeq ($(distrib),1)
ifeq ($(word 2,$(HPVERS_WORDS)), 10)
SOFLAGS += -Wl,-x -Wl,+h/usr/lib/$(@F)
else
ifeq ($(buildbits),32)
SOFLAGS += -Wl,-x -Wl,+h$(@F) -Wl,+b/usr/lib
endif
ifeq ($(buildbits),64)
SOFLAGS += -Wl,-x -Wl,+h$(@F) -Wl,+b/usr/lib/pa20_64
endif
endif
endif
QUOTE:
SOFLAGS似乎没什么用途, 不用distrib为1,只要buildbits=64就OK,因为带了-mt, 会自动选择正确的库。lld查下生成库的依赖关系就知道
[ 本帖最后由 居然要登录 于 2008-3-13 22:57 编辑 ]