Ubuntu 14.04. J'ai installé gcc-arm-linux-gnueabihf, g++-arm-linux-gnueabihf (j'ai essayé 4.8 et 4.9 de utopic).
Code qui utilise 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;
}
Compilation avec :
arm-linux-gnueabihf-g++ --std=c++11 main.cpp -lpthread -o main
Sur le RPI, il échoue :
pi@raspberrypi ~ $ ./main
pure virtual method called
terminate called without an active exception
Aborted
La compilation sur le RPI fonctionne :
pi@raspberrypi ~ $ g++ --std=c++0x main.cpp -lpthread -o main
Image Pi 2015-02-16-raspbian-wheezy, g++ sur Pi (Debian 4.6.3-14+rpi1) 4.6.3.
J'ai essayé les options du compilateur -mcpu=cortex-a7
, -mcpu=cortex-a8
y -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4,8}
qui ont été mentionnés dans des questions similaires.
J'ai aussi essayé g++ à partir de l'archive publique : http://ppa.launchpad.net/linaro-maintainers/toolchain/ubuntu précis
Pourquoi cela se produit-il et comment obtenir un compilateur croisé qui fonctionne ?