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.
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 untuk dentang++
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
Saat perlu menggunakan menggunakan bendera
-stdlib=sebuah berkas++
untuk compiler dan linker ketika compile dengan gcc?
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-kadang gcc
dan g++
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/Linux gcc
dan g++
benar-benar GCC tidak Dentang, dan jadi -stdlib
pilihan won't bekerja pada semua.
Apakah compiler secara otomatis menggunakan sebuah berkas++?
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 menggunakan aku
dan L
dan -l
bendera ke titik itu untuk alternatif set dari header dan library file).
saya menggunakan gcc4.8.2 pada Ubuntu 13.10 dan saya ingin menggunakan c++11 standar. Saya sudah lulus
-std=c++11
untuk compiler.
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 dalam g++
compiler dan juga C++11 fitur-fitur dalam sebuah berkas++ header.