Rumah > pembangunan bahagian belakang > C++ > Mengapa Kod C `std::thread` Saya Gagal Dipautkan pada Linux dengan GCC dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Kod C `std::thread` Saya Gagal Dipautkan pada Linux dengan GCC dan Bagaimana Saya Boleh Membetulkannya?

Linda Hamilton
Lepaskan: 2024-11-29 07:08:09
asal
169 orang telah melayarinya

Why Does My C   `std::thread` Code Fail to Link on Linux with GCC, and How Can I Fix It?

Menyelesaikan Isu Pemautan apabila menggunakan std::thread dengan GCC pada Linux

Dalam bidang multithreading dengan C , Perpustakaan Standard C menyediakan kelas std::thread. Apabila cuba menggunakan std::thread dengan GCC pada sistem Linux, ralat berikut mungkin timbul:

terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted 
Aborted
Salin selepas log masuk

Punca:

Ralat ini menunjukkan bahawa pemautan yang betul pilihan belum ditentukan untuk pengkompil menyelesaikan kebergantungan yang berkaitan dengan std::thread. Khususnya, pada Linux, perpustakaan pthread terlibat dalam pelaksanaan std::thread.

Penyelesaian:

Untuk menangani isu ini, pilihan pengkompil -pthread mesti diambil bekerja. Pilihan ini mengarahkan pengkompil untuk memautkan atur cara dengan perpustakaan pthread. Begini cara untuk menyusun kod dengan betul dengan pilihan pemautan yang sesuai:

g++ -std=c++0x test.cpp -pthread
Salin selepas log masuk
Salin selepas log masuk

Peletakan Pilihan Pemautan:

Adalah penting untuk ambil perhatian bahawa pilihan -pthread harus disenaraikan selepas fail sumber(.cpp) semasa menyusun. Ini memastikan bahawa pengkompil menyelesaikan kebergantungan dengan betul.

Perintah Disemak:

Selepas menambah pilihan -pthread, arahan kompilasi yang disemak akan muncul sebagai:

g++ -std=c++0x test.cpp -pthread
Salin selepas log masuk
Salin selepas log masuk

Dengan memasukkan pilihan -pthread, kod akan berjaya menyusun dan jalankan, membenarkan std::thread berfungsi seperti yang dimaksudkan untuk multithreading dalam persekitaran Linux anda.

Atas ialah kandungan terperinci Mengapa Kod C `std::thread` Saya Gagal Dipautkan pada Linux dengan GCC dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan