在ARM Linux交叉编译环境中链接到POCO库的问题

时间:2013-12-09 15:55:16

标签: linux linker arm poco

将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)

0 个答案:

没有答案