cc dan g++ adalah compiler-drivers dari 'Gnu Compiler Koleksi'(yang dulunya hanya' Gnu C Compiler').
Meskipun mereka secara otomatis menentukan backend mana (
cc1  cc1plus ...) untuk panggilan tergantung pada jenis file, kecuali diganti dengan -x language, mereka memiliki beberapa perbedaan.
Perbedaan yang mungkin paling penting dalam pengaturan default mereka adalah pustaka yang mereka tautkan secara otomatis.
Menurut dokumentasi online GCC opsi tautan dan bagaimana g ++ dipanggil, 
g++ setara dengan gcc -xc++ -lstdc++ -shared-libgcc (Yang pertama adalah opsi kompilator, kedua adalah opsi penghubung). Ini dapat diperiksa dengan menjalankan keduanya dengan -v option (ini menampilkan perintah-perintah backend toolchain yang sedang dijalankan).
 555
 2017-10-05 20:26
GCC: GNU Compiler Collection
- Perujuk ke semua bahasa yang berbeda yang didukung oleh kompilator GNU.
gcc: GNU C Compiler
g ++: GNU C ++ Compiler
g ++: GNU C ++ Compiler
Perbedaan utama:
- gcc akan mengkompilasi: * .c / *. file cpp sebagai C dan C ++.
- g ++ akan mengkompilasi: * .c / *. file cpp tetapi semuanya akan diperlakukan sebagai file C ++.
- Juga jika Anda menggunakan g ++ untuk menautkan file objek, maka tautan itu secara otomatis di std C ++ libraries (gcc tidak melakukan ini).
- gcc mengkompilasi file C memiliki lebih sedikit makro yang telah ditentukan.
- gcc compiling * .cpp dan g ++ compiling * .c / *. file cpp memiliki beberapa macro tambahan.
Makro Ekstra saat mengkompilasi file * .cpp:
#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern
 352
 2017-10-06 01:55
Untuk c ++ Anda harus menggunakan g ++.
Ini adalah compiler yang sama (misalnya koleksi compiler GNU). GCC atau G ++ hanya memilih front-end yang berbeda dengan opsi default yang berbeda.
Singkatnya: jika Anda menggunakan g + + frontend akan memberi tahu tautan yang mungkin ingin Anda tautkan dengan pustaka standar C ++. Frontend gcc tidak akan melakukan itu (juga bisa terhubung dengan mereka jika Anda melewatkan opsi baris perintah yang tepat).
 60
 2017-10-05 20:29
Meskipun perintah gcc dan g ++ melakukan hal yang sangat mirip, g ++ dirancang untuk menjadi perintah yang akan Anda gunakan untuk mengkompilasi program C ++; itu dimaksudkan untuk secara otomatis melakukan hal yang benar.
Di belakang layar, mereka benar-benar program yang sama. Seperti yang saya mengerti, keduanya memutuskan apakah akan mengkompilasi program sebagai C atau sebagai C ++ berdasarkan ekstensi nama file. Keduanya mampu menghubungkan terhadap pustaka standar C ++, tetapi hanya g ++ yang melakukan ini secara default. Jadi jika Anda memiliki program yang ditulis dalam C ++ yang tidak perlu dihubungkan dengan pustaka standar, gcc akan melakukan hal yang benar; tetapi kemudian, begitu juga g ++. Jadi tidak ada alasan untuk tidak menggunakan g ++ untuk pengembangan C ++ umum.
 15
 2017-10-06 00:51
Apa perbedaan antara 
g++ dan gcc?gcc telah berevolusi dari satu bahasa "GNU C Compiler" menjadi "GNU Compiler Collection" multi bahasa. Istilah "GNU C Compiler" masih digunakan kadang-kadang dalam konteks pemrograman C.
Itu 
g++  aku s kompiler C ++ untuk Koleksi Kompiler GNU. Seperti gnat adalah kompiler Ada untuk gcc. lihat Menggunakan GNU Compiler Collection (GCC)
Misalnya, Ubuntu 16.04 
man g++ perintah mengembalikan GCC(1) halaman manual.
Itu 
man gcc menyatakan bahwa ...g++menerima sebagian besar opsi yang sama dengangcc
dan itu standarnya ...
... penggunaangcctidak menambahkan pustaka C ++.g++adalah sebuah program yang memanggil GCC dan secara otomatis menentukan tautan terhadap C ++ Perpustakaan. Ia memperlakukan file .c, .h dan .i sebagai file sumber C ++ sebagai ganti File sumber C kecuali jika -x digunakan. Program ini juga berguna ketika meng-precompiling file header C dengan ekstensi .h untuk digunakan dalam C ++ kompilasi.
Cari 
gcc halaman manual untuk rincian adat pada varian pilihan gcc dan g++.
Mana yang harus digunakan untuk pengembangan c ++ umum?
Antara 
gcc atau g++ dapat digunakan untuk pengembangan C ++ umum dengan pengaturan opsi yang berlaku. Namun, g++ perilaku default lebih sejajar dengan pengembangan C ++ sentris.
 15
 2018-01-05 10:34
Saya menjadi tertarik dengan masalah ini dan melakukan beberapa eksperimen
- Saya menemukan deskripsi itu sini, tapi itu sangat pendek.
- Lalu saya mencoba bereksperimen dengan gcc.exe dan g ++. Exe di mesin windows saya:$ g++ --version | head -n1 g++.exe (gcc-4.6.3 release with patches [build 20121012 by perlmingw.sf.net]) 4.6.3 $ gcc --version | head -n1 gcc.exe (gcc-4.6.3 release with patches [build 20121012 by perlmingw.sf.net]) 4.6.3
- Saya mencoba mengkompilasi file uji sederhana c89, c99, dan c ++ 1998 dan Ini bekerja dengan baik untuk saya dengan pencocokan ekstensi yang benar untuk bahasagcc -std=c99 test_c99.c gcc -std=c89 test_c89.c g++ -std=c++98 test_cpp.cpp gcc -std=c++98 test_cpp.cpp
- Tetapi ketika saya mencoba menjalankan "koleksi gnu compiler collection" dalam mode itu:$ gcc -std=c++98 test_cpp.c cc1.exe: warning: command line option '-std=c++98' is valid for C++/ObjC++ but not for C [enabled by default]
- Tetapi yang satu ini masih berfungsi tanpa kesalahan$ gcc -x c++ -std=c++98 test_cpp.c
- Dan ini juga$ g++ -std=c++0x test_cpp_11.cpp
p.s. Uji file
$ cat test_c89.c test_c99.c test_cpp.cpp
// C89 compatible file
int main()
{
    int x[] = {0, 2};
    return sizeof(x);
}
// C99 compatible file
int main()
{
    int x[] = {[1]=2};
    return sizeof(x);
}
// C++1998,2003 compatible file
class X{};
int main()
{
    X x;
    return sizeof(x);
}
// C++11
#include <vector>
enum class Color : int{red,green,blue}; // scoped enum
int main()
{
    std::vector<int> a {1,2,3}; // bracket initialization
    return 0;
}
Temuan:
- Jika melihat pohon proses maka tampaknya gcc, dan g ++ adalah backend ke alat lain, yang di lingkungan saya adalah: cc1plus.exe, cc1.exe, collect2.exe, as.exe, ld.exe
- gcc berfungsi dengan baik sebagai metatool karena jika Anda memiliki ekstensi yang benar atau diatur dengan benar -std -x bendera. Lihat ini
 10
 2018-03-16 16:30
Satu-satunya perbedaan yang penting adalah bahwa Anda memberikan sebuah .c ke gcc, maka akan dikompilasi sebagai C, sedangkan g ++ akan selalu memperlakukannya sebagai C ++.
 9
 2017-10-05 20:35
"GCC" adalah istilah singkat umum untuk Koleksi Kompiler GNU. Ini adalah nama yang paling umum untuk compiler, dan nama yang digunakan ketika penekanannya adalah pada kompilasi program C (seperti singkatan sebelumnya berdiri untuk "GNU C Compiler").
Ketika mengacu pada kompilasi C ++, biasanya memanggil compiler “G ++”. Karena hanya ada satu kompilator, itu juga akurat untuk menyebutnya "GCC" tidak peduli apa konteks bahasa; Namun, istilah "G ++" lebih berguna ketika penekanannya adalah pada kompilasi program C ++.
Anda bisa membaca lebih lanjut sini.
 9
 2017-10-18 11:37
gcc dan g ++ keduanya adalah GNU compiler. Mereka berdua mengkompilasi c dan c ++. Perbedaannya adalah untuk * .c file gcc memperlakukannya sebagai program c, dan g ++ melihatnya sebagai program c ++. * File .cpp dianggap sebagai program c ++. c ++ adalah seperangkat c super dan sintaksnya lebih ketat, jadi berhati-hatilah dengan sufiks.
 0
 2017-08-12 08:44
Saya menguji gcc dan g ++ dalam sistem linux. Dengan menggunakan MAKEFILE, saya dapat mendefinisikan compliler yang digunakan oleh "GNU make". Saya menguji dengan fitur "dynamic memory" yang ditemukan dari "C plus plus" oleh:
int main(){
int * myptr = new int;
* myptr = 1;
printf("myptr[0] is %i\n",*myptr);
return 0;
}
Hanya g ++ yang dapat berhasil dikompilasi di komputer saya sementara gcc akan melaporkan kesalahan
undefined reference to `operator new(unsigned long)'
Jadi kesimpulan saya sendiri adalah gcc tidak sepenuhnya mendukung "C plus plus". Tampaknya memilih g ++ untuk file sumber C ++ adalah opsi yang lebih baik.






 
 
 
No comments:
Post a Comment