2010-08-07 21 views
10

Duyệt qua đơn vị tiền tệ trong sách C++ 0x và nghĩ rằng tôi sẽ chạy mã mẫu. Nó là cơ bản như nó được.C++ 0x "Hello Concurrent World" ngay lập tức segfaults trên g ++/linux?

#include <iostream> 
#include <thread> 

void hello() 
{ 
    std::cout<<"Hello Concurrent World\n"; 
} 


int main(int argc, char *argv[]) 
{ 
    std::thread t(hello); 

    t.join(); 
} 

Biên soạn với:

g++ -std=c++0x -g -o pgm pgm.cpp 

Goes bùng nổ với:

Program received signal SIGSEGV, Segmentation fault. 
_dl_fixup (l=0x7ffff7b0992c, reloc_arg=<value optimized out>) at ../elf/dl-runtime.c:147 
147  ../elf/dl-runtime.c: No such file or directory. 
     in ../elf/dl-runtime.c 

dường như là một thiết lập/thư viện vấn đề của một số loại. Bất cứ ai quen thuộc với điều này?

Trả lời

20

Bạn cần biên dịch/liên kết bằng cờ -pthread.

+0

Tát đầu! Đó là nó. – ValenceElectron

+7

Có nên thực hiện C++ không quan tâm đến chi tiết này? Nếu không, những gì sử dụng là có trong std :: thread? –

+0

Tôi không hiểu tại sao nó không cung cấp lỗi liên kết. –