2017-05-22 1 views
-1

-march=armv8-a 플래그로 gcc를 통해 C++ Raspberry Pi 3 코드를 컴파일하려고합니다. 그러나이 플래그를 사용하면 pure virtual method called이라고하여 내 스레드가 실패하게됩니다. -march=armv8-a 플래그가 있다는 것을 알고 있습니다. 컴파일하지 않으면 스레드가 다시 작동하기 때문입니다.-march로 컴파일하면 스레드가 "pure virtual method called"라고 말합니다.

참고 : 스레드도 시작되지 않습니다, 그냥주는 pure virtual method called

누군가가 자신의 라즈베리 파이 3 -march=armv8-a이를 컴파일하고 그들이 무엇을 가지고 다시보고 할 수 있습니까? armv8-a 이후

#include <iostream> 
#include <thread> 
#include <unistd.h> 

void threadedFunction() 
{ 
    std::cout << "Hello from thread" << std::endl; 
} 

int main() 
{ 
    std::thread t1(threadedFunction); 
    sleep(2); 
    return 0; 
} 
+2

왜 스레드를 '분리 (detach)'하고 '결합 (join)'합니까? – Justin

+0

@justin 나는 원래 코드를 어리둥절하게했다. –

+4

@KevinDuarte 아직 잘못되었습니다. 일단 분리하면 더 이상 '참여할 수 없으므로 예외를 가져야합니다. – InternetAussie

답변

0

-march=armv8-a 플래그를 64 비트 시스템에 대해 컴파일하려고하여, 64 비트 구조를 사용한다. 그러나 많은 라즈베리 파이 OS (이미지)는 32 비트이므로 충돌 또는 오류가 발생할 수 있습니다.

신용 : https://stackoverflow.com/users/1505939/m-m