使用cmake实用程序编译时出错

时间:2012-06-26 11:12:53

标签: c++ gcc xerces undefined-reference

我正在尝试使用以下make命令编译我的gcc代码。 操作系统:Redhat,gcc - 4.1
但我得到的错误如下: rmtrain @ lintrni130 $ / usr / local / bin / make all

[ 21%] Built target GCVCore
Linking CXX executable CFE
/usr/bin/ld: warning: libicui18n.so.36, needed by ../../Generic/icu/lib/libicuio.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libxalanMsg.so.110, needed by ../../Generic/Xalan/lib/libxalan-c.so, not found (try using -rpath or -rpath-link)
CMakeFiles/CFE.dir/trnuser1/rmtrain/DevelopmentEnv/Generic/ConvUI/GCVConvUISetting.o: In function `xercesc_2_6::XMLAttDefList::~XMLAttDefList()':
GCVConvUISetting.cpp:(.text._ZN11xercesc_2_613XMLAttDefListD0Ev[xercesc_2_6::XMLAttDefList::~XMLAttDefList()]+0x2f): undefined reference to `xercesc_2_6::XMemory::operator delete(void*)'

请帮助解决这个问题。

2 个答案:

答案 0 :(得分:0)

警告意味着您链接的某些库依赖于其他共享库,并且在链接器的搜索路径中找不到这些库。链接器手册描述了它如何在docs for the -rpath-link option

中形成搜索路径

他们只是警告,所以没有导致你的链接失败。如果在运行时找不到那些必需的库,那将是一个问题,但在链接时不一定是个问题。

如果要使警告静音,则需要找出包含libicui18n.so.36libxalanMsg.so.110的目录,并使用手册中描述的方法之一告诉链接器查看该目录。

最后一行是真正的问题,并表示您没有链接到定义该符号的库。您需要找出它是哪个库并使用-lfoo链接到它,它可能类似于-lxerces

答案 1 :(得分:0)

我重新安装了icu 3.2而不是3.6。它工作正常。