Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah dentang dengan libc dalam mod c 0x gagal memautkan contoh rangsangan::program_options ini?

Mengapakah dentang dengan libc dalam mod c 0x gagal memautkan contoh rangsangan::program_options ini?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 13:43:30306semak imbas

Why does clang with libc   in c  0x mode fail to link this boost::program_options example?

Mengapa tidak berdenting dengan libc dalam mod c 0x memautkan contoh rangsangan::program_options ini?

Menyusun contoh program yang melibatkan rangsangan::program_options dengan denting menggunakan libc dan mod c 0x menghasilkan ralat simbol yang tidak ditentukan. Walau bagaimanapun, kod yang sama menyusun dan memaut dengan jayanya menggunakan g -mp-4.7 atau clang tanpa libc .

Isunya

Isu timbul daripada ketidakserasian boost::program_options, yang dibina menggunakan libstdc , dengan libc . Untuk mengelakkan pencampuran tidak sengaja perpustakaan standard yang tidak serasi dan memastikan keserasian binari, libc menggunakan ciri C 11 yang dipanggil "ruang nama sebaris." Ini menukar Antara Muka Perduaan Aplikasi (ABI) std::string tanpa menjejaskan Antara Muka Pengaturcaraan Aplikasi (API).

Penyelesaian

Untuk menyelesaikan isu keserasian ini, bina semula rangsangan menggunakan denting dengan -stdlib=libc flag:

clang++ -stdlib=libc++

Tindakan ini akan membina semula rangsangan dengan libc dan mengelakkan konflik simbol yang timbul daripada menggunakan perpustakaan standard yang tidak serasi.

Atas ialah kandungan terperinci Mengapakah dentang dengan libc dalam mod c 0x gagal memautkan contoh rangsangan::program_options ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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