linux - g++ "在 Linux 上对 `typeinfo for xercesc_3_2::XMLException" 的未定义引用
问题描述
g++
我在使用和xercers
编译包时遇到了以下错误。
/home/201999800003/YangFan/gcc/bin/g++ -o gcam.exe -O2 -pthread -ggdb -DNDEBUG -DFUSION_MAX_VECTOR_SIZE=30 -MMD -std=c++14 -Wno-deprecated -Wl,-rpath,/home/201999800003/xerces-c-3.2.3/src/xercesc/lib:/home/201999800003/xerces-c-3.2.3/src/xercesc/dom:/home/201999800003/xerces-c-3.2.3/src/xercesc/util -Wl,-rpath, main.o -lgcam -L/usr/local/lib -L/home/201999800003/xerces-c-3.2.3/src/xercesc/lib:/home/201999800003/xerces-c-3.2.3/src/xercesc/dom:/home/201999800003/xerces-c-3.2.3/src/xercesc/util -L/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux -L -lxerces-c -ljvm -L/home/201999800003/boost_1_75_0/stage/lib -Wl,-rpath,/home/201999800003/boost_1_75_0/stage/lib -lhector -lboost_system -lboost_filesystem -lm
/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux/libgcam.a(scenario.o):(.gcc_except_table+0x3bc): undefined reference to `typeinfo for xercesc_3_2::XMLException'
/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux/libgcam.a(scenario.o):(.gcc_except_table+0x424): undefined reference to `typeinfo for xercesc_3_2::DOMException'
/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux/libgcam.a(scenario.o):(.gcc_except_table+0x428): undefined reference to `typeinfo for xercesc_3_2::XMLException'
/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux/libgcam.a(scenario.o): In function `_ZN9XMLHelperIvE13safeTranscodeB5cxx11EPKDs':
/home/201999800003/YangFan/gcam-core/cvs/objects/containers/source/../../util/base/include/xml_helper.h:709: undefined reference to `xercesc_3_2::XMLPlatformUtils::fgMemoryManager'
/home/201999800003/YangFan/gcam-core/cvs/objects/containers/source/../../util/base/include/xml_helper.h:709: undefined reference to `xercesc_3_2::XMLString::transcode(char16_t const*, xercesc_3_2::MemoryManager*)'
/home/201999800003/YangFan/gcam-core/cvs/objects/containers/source/../../util/base/include/xml_helper.h:711: undefined reference to `xercesc_3_2::XMLPlatformUtils::fgMemoryManager'
/home/201999800003/YangFan/gcam-core/cvs/objects/containers/source/../../util/base/include/xml_helper.h:711: undefined reference to `xercesc_3_2::XMLString::release(char**, xercesc_3_2::MemoryManager*)'
我认为这是因为我的环境变量xercers
不合适。错误信息说我使用过lxerces-c
. 所以我的问题与我通过谷歌找到的其他问题不同。
特别是,我怀疑我设置错了LD_LIBRARY_PATH
。
之前,我试过LD_LIBRARY_PATH=/home/201999800003/xerces-c-3.2.3/src/xercesc/lib
没有成功
所以我设置
LD_LIBRARY_PATH=/home/201999800003/xerces-c-3.2.3/src/xercesc/lib:/home/201999800003/xerces-c-3.2.3/src/xercesc/dom:/home/201999800003/xerces-c-3.2.3/src/xercesc/util
. 因为我看到错误信息说XMLException
并且这个文件在目录中/home/201999800003/xerces-c-3.2.3/src/xercesc/util
我四处搜索,没有找到任何关于如何设置环境变量的具体答案。
对不起,我是 Linux 和 C++ 的新手。谁能给我一个关于如何解决这个问题的提示?
非常感谢!
更新
我尝试安装另一个版本xerces3.1.1
并再次编译包,它弹出完全相同的错误消息typeinfo for xercesc_3_2::XMLException
。正常吗?
我也检查config.log
了xerces
。尽管 xerces 配置成功,一些变量在 config.log 中显示为 undefined
/home/201999800003/xerces-c-3.2.3/conftest.cpp:116: undefined reference to `clock_gettime'
/home/201999800003/xerces-c-3.2.3/conftest.cpp:137: undefined reference to `wcsupr'
ACLOCAL='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing aclocal-1.16'
AUTOCONF='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing autoconf'
AUTOHEADER='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing autoheader'
AUTOMAKE='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing automake-1.16'
MAKEINFO='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing makeinfo'
解决方案
推荐阅读
- google-bigquery - 从一个数据集中的表中计数,并将其添加到不同数据集中的表中的列
- javascript - 试图让旧程序工作但得到错误 [MongoError]: failed to connect to server
- flutter - 错误:不支持的操作:调用api颤动时的Platform._version
- github - 哪些事件使用 `on.pull_request.tags` 触发器触发工作流?
- r - 如何使用 psych 包提取所有观察值的主成分值
- unity3d - 未能加载“libmain.so”!您的硬件不支持此应用程序
- python - Identify index of all elements in a list comparing with another list
- javascript - Promise, async, await - Boolean 返回 false 但如果条件仍然被调用
- pdf - 如何在 Flutter Web 中使用文件路径合并两个 PDF
- java - 如果在 Activity 更改时调用 onCreate 和 onStart 两者之间的区别在哪里?目的是什么?