我很难使我的代码段在centos 7上运行。
因此,我将这些软件包安装在包装盒上:
log4cxx.x86_64,log4cxx-devel.x86_64,apr.x86_64,apr-devel.x86_64, apr-util.x86_64,apr-util-devel.x86_64,glib2.x86_64, glib2-devel.x86_64
在CMakeList.txt中,我尝试了一堆组合(成功构建),但是在执行二进制文件时却得到了相同的结果。
当前,我有这个:
find_package(PkgConfig)
find_library(LOG4CXX_libraRY log4cxx)
尽管我很肯定它可以找到该库,但我也尝试过:
-llog4cxx -lapr-1 -laprutil-1 -lexpat -lglib-2.0
我用这两个配置构建,当我运行可执行文件输出时,我会得到:
undefined symbol: _ZN7log4cxx3xml15DOMConfigurator9configureERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
'nm'输出为:
$ nm -D /usr/lib64/liblog4cxx.so | grep _ZN7log4cxx3xml15DOMConfigurator9configure
00000000000f9ff0 T _ZN7log4cxx3xml15DOMConfigurator9configureERKSbIwSt11char_traitsIwESaIwEE
00000000000f9e40 T _ZN7log4cxx3xml15DOMConfigurator9configureERKSs
在我的.cpp文件中,我基本上是这样使用的:
try {
log4cxx::xml::DOMConfigurator::configure("/root/1.xml");
}
catch (log4cxx::helpers::Exception&) {
fprintf( stderr,"Error on loading Log-config file" );
return -1;
}
ps:同一项目可以编译并在FreeBSD 12上运行,没有任何问题。