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

を与え、誰かが自分のラズベリーパイ3に-march=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

armv8-aは、64ビットアーキテクチャを使用するので、-march=armv8-aフラグを使用すると、64ビットマシン用にコンパイルしようとしています。しかし、多くのRaspberry Pi OS(画像)は32ビットであり、クラッシュやエラーを引き起こす可能性があります。

クレジット:https://stackoverflow.com/users/1505939/m-m

関連する問題