feixiaofo 发表于 2009-6-3 13:40:10

ACE-TAO编译,急!!

各位大虾请教个ace——tao的编译问题。
我在ibm的aix5.3服务器上用gcc-g++4.2.4编译ace,在编译到TAO/TAO_IDL时,提示失败,失败信息如下:
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
ld: 0711-317 ERROR: Undefined symbol: .__sync_fetch_and_add_4

下面是make时的语句:
/bin/sh ../libtool --tag=CXX --mode=link g++   -mcpu=common -W -Wall -Wpointer-arith-g -O2
-pthread -lstdc++   -o tao_idltao_idl-drv_args.otao_idl-drv_preproc.o tao_idl-tao_idl.o libTAO_
IDL_BE.lalibTAO_IDL_FE.la../../ace/libACE.la
g++ -mcpu=common -W -Wall -Wpointer-arith -g -O2 -o .libs/tao_idl tao_idl-drv_args.o tao_idl-drv_pre
proc.o tao_idl-tao_idl.o-pthread /opt/pware/lib/libstdc++.a -L/gcc/4.2.4/powerpc-ibm-aix5.3.0.0/li
bstdc++-v3/src -L/gcc/4.2.4/powerpc-ibm-aix5.3.0.0/libstdc++-v3/src/.libs -L/gcc/4.2.4/./gcc -L/opt/
pware/lib -lm -lc ./.libs/libTAO_IDL_BE.a ./.libs/libTAO_IDL_FE.a -L../../ace/.libs -lACE -lxti -Wl,
-blibpath:/usr/local/lib:/opt/pware/lib/gcc/powerpc-ibm-aix5.3.0.0/4.2.4/pthread:/opt/pware/lib/gcc/
powerpc-ibm-aix5.3.0.0/4.2.4/../../../pthread:/opt/pware/lib/gcc/powerpc-ibm-aix5.3.0.0/4.2.4:/opt/p
ware/lib/gcc/powerpc-ibm-aix5.3.0.0/4.2.4/../../..:/usr/lib:/lib

请帮忙看看,解决一下,谢谢,十分感谢。24小时在线等!!!!!!!!!!

winston 发表于 2009-6-3 13:51:39

编译中符号找不到的错误很常见。
我觉得你可以grep 查一下fetch_and_add 类似的符号在什么文件出现,然后加入编译试试。

feixiaofo 发表于 2009-6-3 13:57:10

回复 #2 winston 的帖子

您好,我刚刚找到sync_fetch_and_add_4所在的库,在TAO/TAO_IDL/.libs目录下的libTAO_IDL_BE.a
libTAO_IDL_FE.a库中包含sync_fetch_and_add_4,但是在make中已经包含打了该两个库
/bin/sh ../libtool --tag=CXX --mode=link g++   -mcpu=common -W -Wall -Wpointer-arith-g -O2
-pthread -lstdc++   -o tao_idltao_idl-drv_args.otao_idl-drv_preproc.o tao_idl-tao_idl.o libTAO_
IDL_BE.lalibTAO_IDL_FE.la../../ace/libACE.la
g++ -mcpu=common -W -Wall -Wpointer-arith -g -O2 -o .libs/tao_idl tao_idl-drv_args.o tao_idl-drv_pre
proc.o tao_idl-tao_idl.o-pthread /opt/pware/lib/libstdc++.a -L/gcc/4.2.4/powerpc-ibm-aix5.3.0.0/li
bstdc++-v3/src -L/gcc/4.2.4/powerpc-ibm-aix5.3.0.0/libstdc++-v3/src/.libs -L/gcc/4.2.4/./gcc -L/opt/
pware/lib -lm -lc ./.libs/libTAO_IDL_BE.a ./.libs/libTAO_IDL_FE.a -L../../ace/.libs -lACE -lxti -Wl,
-blibpath:/usr/local/lib:/opt/pware/lib/gcc/powerpc-ibm-aix5.3.0.0/4.2.4/pthread:/opt/pware/lib/gcc/
powerpc-ibm-aix5.3.0.0/4.2.4/../../../pthread:/opt/pware/lib/gcc/powerpc-ibm-aix5.3.0.0/4.2.4:/opt/p
ware/lib/gcc/powerpc-ibm-aix5.3.0.0/4.2.4/../../..:/usr/lib:/lib

winston 发表于 2009-6-3 15:43:51

也许跟库的排列顺序相关,查一下什么代码引用了sync_fetch_and_add_4,然后看看此代码编译中的顺序与libTAO_IDL_BE.a这个库的排列关系。或者干脆在最后面重复加上这个库试试看。
我不用TAO,上面只是经验推测而已。

feixiaofo 发表于 2009-6-3 16:31:13

回复 #4 winston 的帖子

查找sync_fetch_and_add_4,发现在libTAO_IDL_BE.a
libTAO_IDL_FE.a两个库中,make中已经添加了这两个库,两个库的顺序都顺序都反复测试过,还是提示
ld: 0711-317 ERROR: Undefined symbol: .__sync_fetch_and_add_4
然后查找.__sync_fetch_and_add_4,在libTAO_IDL_BE.la   libTAO_IDL_FE.la中,在make中也有如:
/bin/sh ../libtool --tag=CXX --mode=link g++   -mcpu=common -W -Wall -Wpointer-arith-g -O2 \
-pthread -lstdc++-o tao_idltao_idl-drv_args.otao_idl-drv_preproc.o tao_idl-tao_idl.o \
llibTAO_IDL_BE.lalibTAO_IDL_FE.la../../ace/libACE.la
顺序也反复测试过,还是不行。
请专家帮忙解决,谢谢了!!!!!!!!!!!!!!!!!!!11
页: [1]
查看完整版本: ACE-TAO编译,急!!