Rumah > pembangunan bahagian belakang > C++ > Mengapa Clang dengan libc dalam Mod C 0x Gagal Menghubungkan Boost::Program_Options?

Mengapa Clang dengan libc dalam Mod C 0x Gagal Menghubungkan Boost::Program_Options?

Barbara Streisand
Lepaskan: 2024-11-03 01:46:03
asal
929 orang telah melayarinya

Why Does Clang with libc   in C  0x Mode Fail to Link Boost::Program_Options?

Mengapa berdenting dengan libc dalam Mod C 0x Gagal Pautan Boost::Program_Options Contoh

Coretan yang diberikan menunjukkan isu semasa cuba menyusun dan boost link::program_options dengan clang menggunakan libc dalam mod C 0x.

Analisis Masalah

Ralat penyusunan berpunca daripada ketidakserasian antara libc dan libstdc , standard lalai perpustakaan dilaksanakan oleh g . libc menggunakan butiran pelaksanaan yang berbeza untuk std::string, memperkenalkan perbezaan ABI (Antara Muka Binari Aplikasi) daripada libstdc .

Penyelesaian

Untuk menyelesaikan isu ini, adalah perlu untuk membina semula Boost menggunakan clang dengan bendera -stdlib=libc. Ini memastikan bahawa pustaka Boost disusun terhadap pustaka standard yang sama dengan pustaka boleh laku yang dipautkan. Ia menyelaraskan ABI std::string merentas perpustakaan Boost dan program yang sedang disusun.

Penjelasan Teknikal

libc memanfaatkan ruang nama sebaris untuk mengubah ABI std: : string tanpa mengubah suai APInya. Ini mewujudkan percanggahan yang dirasakan antara kedua-dua perpustakaan, di mana std::string daripada libstdc dan std::__1::string daripada libc dianggap sebagai struktur data yang berbeza oleh pemaut.

Dengan membina semula Boost dengan standard yang sesuai perpustakaan, definisi simbol untuk boost::program_options sepadan dengan yang diharapkan oleh pemaut, membolehkan pemautan berjaya.

Atas ialah kandungan terperinci Mengapa Clang dengan libc dalam Mod C 0x Gagal Menghubungkan Boost::Program_Options?. 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