Неопределенная ссылка на std :: to_string при линковке - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь кросс-компилировать программу с помощью uClibc и всегда получаю сообщение об ошибке с неопределенной ссылкой на std :: to_string во время выполнения связывания. Я уже применил обходной путь, который должен помочь решить эту проблему:

#include <string>
#include <sstream>

template <typename T>
std::string to_string(T value)
{
    std::ostringstream os ;
    os << value ;
    return os.str() ;
}

int main()
{
     std::string perfect = to_string(5) ;
}

Это помогло на этапе построения объектов CXX, но при связывании проблема вернулась.

Вот ошибка:

[ 76%] Linking CXX executable gateway
 /home/jakub/build/openwrt/staging_dir/target-arm_cortex-a9+vfpv3_uClibc- 
0.9.33.2_eabi/usr/lib/libPocoFoundation.so: warning: the use of OBSOLESCENT `utime' is discouraged, use 
`utimes'
/home/jakub/build/openwrt/staging_dir/target-arm_cortex-a9+vfpv3_uClibc- 
0.9.33.2_eabi/usr/lib/libcrypto.so.1.0.0: warning: gethostbyname is obsolescent, use getnameinfo() instead.
libGateway.a(NewDeviceCommand.cpp.o): In function `Gateway::NewDeviceCommand::toString() const':
NewDeviceCommand.cpp:(.text+0x218): undefined reference to `std::to_string(int)'
libGateway.a(DeviceManager.cpp.o): In function `Gateway::DeviceManager::lastValue(Gateway::DeviceID 
const&, Gateway::ModuleID const&, Poco::Timespan const&)':
DeviceManager.cpp:(.text+0x554): undefined reference to `std::to_string(int)'
DeviceManager.cpp:(.text+0x57c): undefined reference to `std::to_string(unsigned long)'
libGateway.a(DeviceManager.cpp.o): In function 
`Gateway::DeviceManager::responseDeviceList(Poco::Timespan const&, 
Poco::AutoPtr<Gateway::Answer>)':
DeviceManager.cpp:(.text+0xc04): undefined reference to `std::to_string(unsigned long)'
DeviceManager.cpp:(.text+0xc2c): undefined reference to `std::to_string(unsigned long)'
DeviceManager.cpp:(.text+0xce0): undefined reference to `std::to_string(unsigned long)'
DeviceManager.cpp:(.text+0xd08): undefined reference to `std::to_string(unsigned long)'
....

Спасибо за ваш совет.

...