Czy g++ jest zarówno kompilatorem c++ jak i linkerem?

Patrzyłem na wyjście z mojej kompilacji w Eclipse. Zestawiam procesor ColdFire. Linia kompilacji wygląda tak:

m68k-elf-g++ -O2 -falign-functions=4 -IC:\nburn\include -IC:\nburn\MOD52...

Po którym następuje plik include, oczywiste flagi "kompilatora" i na koniec jeden plik źródłowy, który zmieniłem. Następna linia ponownie wywołuje to samo narzędzie:

m68k-elf-g++ src\main.o src\TouchPanelMediator.o src\Startup.o....

Po których następuje więcej .o files some .pliki ld i inne .akta. Wygląda na to, że łączy ze sobą wszystkie typy plików obiektowych.

W Gnu rodzina czy g++ to jakaś aplikacja, która na podstawie argumentów może określić czy musi kompilować czy linkować? Czy ma wbudowane obie możliwości, czy tylko wysyła kompilację do gcc i linkuje do ld, a mój log tego nie pokazuje?

Author: Tod, 2011-04-22

3 answers

g++ i gcc} kierowcami. Zwykle uruchamiają preprocesor (cpp), kompilator właściwy (cc1plus dla C++ i cc1 dla C) oraz linker (gold lub GNU LD) i wszystkie inne niezbędne rzeczy. Różnica pomiędzy gcc i g++ polega na tym, że ta ostatnia zawiera jedną dodatkową bibliotekę do połączenia z (libstdc++).

W zależności od typu pliku, na którym są wywoływane, mogą pominąć niektóre kroki lub zrobić rzeczy inaczej. Dla plików .o, nie trzeba uruchamiać WŁAŚCIWEGO kompilatora lub na przykład preprocesor.

Jeśli przekażesz im -###, możesz zobaczyć, jak drukuje narzędzia, które wywołuje w każdym kroku jego wykonania.

 39
Author: Johannes Schaub - litb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-22 19:52:38

Zaczerpnięte z tego małego poradnika GCC :

Na podstawie rozszerzenia pliku, które podałeś programowi, wybiera odpowiednie polecenia, które musi uruchomić, aby włączyć źródło, które podałeś, do określonego pliku wyjściowego.

Z ładnym małym flowchartem tego, co dokładnie robi GCC, w zależności od rozszerzeń plików:

input extensions      runs     if   output  

GCC run flow

 28
Author: Xeo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-22 20:43:49

Wysyła linkowanie do ld.

Zobacz też: Jak uzyskać polecenie GCC linker?

 2
Author: Guy Sirton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:30:01