C ++ 11 код с потоком, выдающим ошибку clang версии 3.5 на rpi3, но то же самое работает на моей машине с Ubuntu Linux - PullRequest
1 голос
/ 09 апреля 2019

У меня очень маленький скрипт, как показано ниже:

#include <iostream>
#include <thread>

int main()
{
    std::thread th([]() {
        std::cout << "Hello, World!" << std::endl;
    });

    th.join();

    return 0;
}

Я компилирую, как показано ниже:

clang++ -o demo demo.cpp -lpthread -std=c++11

Когда я выполняю свой бинарный файл после успешной компиляции, он дает следующий вывод на машине с Ubuntu Linux:

Hello, World!

на моем rpi3:

pure virtual method called
terminate called without an active exception
Aborted

моя версия clang на обоих:

на rpi3:

Raspbian clang version 3.5.0-10+rpi1 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
Target: arm-unknown-linux-gnueabihf
Thread model: posix

в Linux:

clang version 3.8.1-24+rpi1 (tags/RELEASE_381/final)
Target: armv6--linux-gnueabihf
Thread model: posix
InstalledDir: /usr/bin

Как заставить это работать?

1 Ответ

1 голос
/ 09 апреля 2019

Это ошибка в Clang.См. отчет об ошибке 23165 .Это появляется даже в clang 3.7 с -std=c++11.

. В соответствии с последним комментарием к отчету об ошибке, оно, похоже, было исправлено в обновлении.

Проверено исправлено, сОбновление, которое я только что получил через канал llvm-toolchain-utopic, в пакет clang-3.7.(версия пакета: 1: 3.7 ~ svn234704-1 ~ exp1)

...