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.

Mengomentari pertanyaan (1)
Larutan

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
Komentar (8)

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.

Komentar (0)

Compiler menggunakan sebuah berkas++ secara otomatis, jika anda menggunakan g++ frontend, tidak gcc frontend.

Komentar (5)