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 ...
... penggunaangcc
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
- 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 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
- 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