Ketika itu diperlukan untuk penggunaan bendera -stdlib=sebuah berkas++?
Ketika itu diperlukan untuk menggunakan menggunakan bendera -stdlib=sebuah berkas++
untuk compiler dan linker ketika compile dengan gcc?
Apakah compiler secara otomatis menggunakan sebuah berkas++?
Saya menggunakan gcc4.8.2 pada Ubuntu 13.10 dan saya ingin menggunakan c++11 standar. Saya sudah lulus -std=c++11
untuk compiler.
48
3
Di Linux: Secara umum, semua yang biasa tersedia di distribusi linux akan menggunakan sebuah berkas++ secara default, dan semua versi modern dari GCC datang dengan sebuah berkas++ yang mendukung C++11. Jika anda ingin mengkompilasi c++11 kode berikut ini, gunakan salah satu dari:
g++ -std=c++11 input.cxx -o a.keluar
(biasanya GNU compiler)g++ -std=gnu++11 input.cxx -o a.keluar
Pada OS X sebelum Mavericks:
g++
itu benar-benar sebuah alias untukdentang++
dan Apple's versi lama dari sebuah berkas++ adalah default. Anda bisa menggunakan libc++ (termasuk c++11 dukungan perpustakaan) dengan melewati-stdlib=libc++
. Jika anda ingin mengkompilasi c++11 kode berikut ini, gunakan salah satu dari:g++ -std=c++11 -stdlib=libc++ input.cxx -o a.keluar
(dentang, bukan GNU compiler!)g++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.keluar
(dentang, bukan GNU compiler!)dentang++ -std=c++11 -stdlib=libc++ input.cxx -o a.keluar
dentang++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.keluar
Pada OS X Mavericks sejak: libc++ adalah default. Anda dapat menggunakan Apel's versi lama dari sebuah berkas++ (yang tidak termasuk c++11 dukungan perpustakaan) dengan melewati
-stdlib=sebuah berkas++
dentang++ -std=c++11 input.cxx -o a.keluar
dentang++ -std=gnu++11 input.cxx -o a.keluar
Jawaban singkat: tidak pernah
Lagi menjawab:
-stdlib
adalah Dentang bendera dan tidak akan bekerja dengan versi GCC yang pernah dirilis. Pada Mac OS X kadang-kadanggcc
dang++
perintah yang sebenarnya alias untuk Dentang tidak GCC, dan versi dari sebuah berkas++ bahwa Apple kapal adalah kuno (circa 2008) jadi tentu saja itu doesn't dukungan C++11. Ini berarti bahwa pada OS X saat menggunakan Dentang-pura-pura-untuk-menjadi-GCC, anda dapat menggunakan-stdlib=libc++
untuk memilih Dentang's baru C++11-perpustakaan yang kompatibel, atau anda bisa menggunakan-stdlib=sebuah berkas++
untuk memilih pra-C++11 antik versi dari sebuah berkas++ yang termasuk dalam museum. Tapi pada GNU/Linuxgcc
dang++
benar-benar GCC tidak Dentang, dan jadi-stdlib
pilihan won't bekerja pada semua.Ya, GCC selalu menggunakan sebuah berkas++ kecuali anda kirim untuk menggunakan no standar perpustakaan dengan
-nostdlib
pilihan (dalam hal ini anda juga perlu menghindari menggunakan standar perpustakaan memiliki, atau menggunakanaku
danL
dan-l
bendera ke titik itu untuk alternatif set dari header dan library file).Anda don't perlu melakukan apa-apa lagi. GCC datang dengan implementasi sendiri dari C++ standar library (sebuah berkas++) yang dikembangkan dan diuji bersama GCC sendiri jadi versi GCC dan versi dari sebuah berkas++ adalah 100% kompatibel. Jika anda mengkompilasi dengan
std=c++11
maka yang memungkinkan C++11 fitur dalamg++
compiler dan juga C++11 fitur-fitur dalam sebuah berkas++ header.Compiler menggunakan sebuah berkas++ secara otomatis, jika anda menggunakan g++ frontend, tidak gcc frontend.