Apa perbedaan Gcc dan G++

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 ++ dipanggilg++ 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
Perbedaan utama:
  1. gcc akan mengkompilasi: * .c / *. file cpp sebagai C dan C ++.
  2. g ++ akan mengkompilasi: * .c / *. file cpp tetapi semuanya akan diperlakukan sebagai file C ++.
  3. Juga jika Anda menggunakan g ++ untuk menautkan file objek, maka tautan itu secara otomatis di std C ++ libraries (gcc tidak melakukan ini).
  4. gcc mengkompilasi file C memiliki lebih sedikit makro yang telah ditentukan.
  5. 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 gcclihat 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 dengan gcc
dan itu standarnya ...
... penggunaan gcc tidak 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
  1. Saya menemukan deskripsi itu sini, tapi itu sangat pendek.
  2. 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
  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 bahasa
    gcc -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
  4. 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]
  5. Tetapi yang satu ini masih berfungsi tanpa kesalahan
    $ gcc -x c++ -std=c++98 test_cpp.c
  6. 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:
  1. 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
  2. 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.
Share:

No comments:

Post a Comment

Translate

Folowers

Popular Posts

Recent Posts

Pages