将POCO 1.4.6p2移植到基于ARM的平台时遇到问题。我已成功制作了所有POCO库,并使用交叉编译和Karo Electronics的ToolChain为他们的TX28板(http://www.karo-electronics.com/tx28.html)安装了这些库。 但是,当我尝试链接到任何动态发布的POCO库时,f。恩。 libPocoFoundation.so我得到这样的链接错误:
链接CXX可执行文件hellodingo /home/armsdk/projects/poco/install/lib/libPocoFoundation.so:未定义引用
Poco::Channel::setProperty(std::string const&, std::string const&)' /home/armsdk/projects/poco/install/lib/libPocoFoundation.so: undefined reference to
Poco :: LoggingRegistry :: channelForName(stlp_std :: basic_string,stlp_std :: allocator> const&)const' /home/armsdk/projects/poco/install/lib/libPocoFoundation.so:未定义引用Poco::SystemException::SystemException(std::string const&, int)' /home/armsdk/projects/poco/install/lib/libPocoFoundation.so: undefined reference to
Poco :: RegularExpressionException :: RegularExpressionException(std :: string const&,int)' ...
但是如果我链接到POCO库的动态调试版本,f.ex。 libPocoFoundationd.so,一切都没有问题。
如果我尝试构建POCO库并且不省略PageCompiler,PageCompiler / File2Page,这些都是需要PocoFoundation和更多POCO库的可执行文件,也是如此。
我正在使用版本gcc和g ++版本4.7.2(交叉编译器)。 我在构建POCO库时使用的是STLport v.5.2.1。
POCO库的发布版本和调试版本之间的链接差异是什么?
PS:即使在使用POCO库的调试版本时,当我添加更多的库而不仅仅是基础(例如PocoZip库)时,我开始从PocoZip获得相同的错误抱怨从PocoZip到PocoFoundatoin中的项目的未定义引用
以下是我用于构建的CMAkeLists.txt:
cmake_minimum_required(VERSION 2.8) set(CMAKE_TOOLCHAIN_FILE /home/armsdk/projects/Toolchain-TX28.cmake) project(hellodingo) add_executable(hellodingo SmoDeviceI2C.cpp tca6424a.cpp main.cpp) include_directories(/home/armsdk/projects/poco/install/include) add_library(STLport SHARED IMPORTED) add_library(PocoFoundation SHARED IMPORTED) set_target_properties(STLport PROPERTIES IMPORTED_LOCATION "/home/armsdk/projects/STLport/install/arm-926ejs-linux-gnueabi-lib/libstlport_arm-linux-gcc.so") set_target_properties(PocoFoundation PROPERTIES IMPORTED_LOCATION "/home/armsdk/projects/poco/install/lib/libPocoFoundationd.so") set_target_properties(PocoUtil PROPERTIES IMPORTED_LOCATION "/home/armsdk/projects/poco/install/lib/libPocoUtild.so") target_link_libraries(hellodingo STLport PocoFoundation PocoUtil) install(TARGETS hellodingo RUNTIME DESTINATION bin)