라즈베리 파이 C ++ 11 std :: thread : 순수 가상 메소드


2

우분투 14.04. gcc-arm-linux-gnueabihf, g ++-arm-linux-gnueabihf (utopic에서 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 이미지 2015-02-16-raspbian-wheezy, Pi의 g ++ (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}그와 유사한 질문에서 언급되었다.

: 또한 PPA에서 g ++ 시도 http://ppa.launchpad.net/linaro-maintainers/toolchain/ubuntu 정확한을

왜 이런 일이 일어나고 작동하는 크로스 컴파일러를 얻는가?


나는 이것이 순수한 프로그래밍 질문이라고 생각하며 스택 오버플로 에 대해 질문해야합니다 .
muru

2
나는 이것이 언어와 프로그래밍보다 컴파일러에 대해 훨씬 더 많은 것으로 생각합니다. 그건 상당히 IMO 우분투.
Oli

stackoverflow의 사람들은 전혀 모른다. 가장 투표 된 답변은 "일부 git 저장소에서 툴체인을 가져 와서 컴파일 한 다음 Pi에서 / lib 및 / usr로 rsync"와 같습니다. Pi의 잠금 버그를 제외하고는 g ++-arm-linux-gnueabihf가 Pi 및 bq 전화 모두에서 거의 작동하기 때문에 끔찍합니다.
Velkan

Velkan 난 당신에 대한 게시물을 볼 수 없습니다. @Oli SO는 또한 컴파일러를 포함하여 프로그래밍과 관련된 도구를 포함합니다.
muru

이것은 라즈베리 파이 1 또는 2입니까? 또한 Pi에서 "uname -a"의 출력은 무엇입니까? 모든 커널이 하드 플로트 인 것은 아닙니다 ( "armhf"의 "hf").
Nathan Osman

답변:


-1

제시 기반 이미지로 작동합니다.


불행히도 내 제시 기반 이미지에서는 작동하지 않습니다. OSX에서 크로스 컴파일하고 있는데 컴파일러의 버그 인 것 같습니다.
Alston


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.