Raspberry Pi C ++ 11 std :: thread: чисто виртуальный метод называется

Ubuntu 14.04. Я установил gcc-arm-linux-gnueabihf, g ++ - arm-linux-gnueabihf (пробовал 4.8 и 4.9 из утопического).

Код, использующий std :: thread:

#include <iostream>
#include <chrono>
#include <future>

void secondList()
{
    const std::chrono::seconds twoSeconds(2);

    for (size_t i = 0; i != 300; ++i)
    {
        std::this_thread::sleep_for(twoSeconds);
        std::cout << "2s\n";
    }
}

int main(int, const char *[])
{
    auto secondThr = std::async(std::launch::async, secondList);

    return 0;
}

Компиляция с помощью:

arm-linux-gnueabihf-g++ --std=c++11 main.cpp -lpthread -o main

На RPI происходит сбой:

pi@raspberrypi ~ $ ./main 
pure virtual method called
terminate called without an active exception
Aborted

Компиляция на RPI работает :

pi@raspberrypi ~ $ g++ --std=c++0x main.cpp -lpthread -o main

Pi image 2015-02-16-raspbian-wheezy, g ++ on Pi (Debian 4.6.3-14 + rpi1) 4.6.3.

Я пробовал опции компилятора -mcpu=cortex-a7, -mcpu=cortex-a8 и -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4,8}, которые были упомянуты в похожих вопросах.

Также попробовал g ++ от ppa: http://ppa.launchpad.net/linaro-maintainers/toolchain/ubuntu точный

Почему это происходит и как получить перекрестный компилятор, который работает?

2
задан 22 April 2015 в 17:05

3 ответа

С находящимся в jessie изображением это работает.

-1
ответ дан 23 April 2015 в 03:05

Добавьте, что это к командной строке для соединения,

-Wl,--whole-archive -lpthread -Wl,--no-whole-archive

Видит это сообщение для объяснений, https://gcc.gnu.org/ml/gcc-help/2010-05/msg00029.html , Это сказало, чтобы быть проблемой TLS, но возможно это связало неполные символы, связанные от статического libpthread.

-1
ответ дан 23 April 2015 в 03:05

Это может, вероятно, быть зафиксировано путем добавления -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 к флагам командной строки.

первопричина и фиксация описаны здесь: https://raspberrypi.stackexchange.com/questions/48225/whats-causing-these-crashes-after-cross-compiling

-1
ответ дан 23 April 2015 в 03:05

Другие вопросы по тегам:

Похожие вопросы: