Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

GCC pod Windows

Ostatnio zmodyfikowano 2017-07-13 20:11
Autor Wiadomość
ParseThisCode
Temat założony przez niniejszego użytkownika
GCC pod Windows
» 2017-07-10 02:53:08
C/C++
#include <cstdio>

int main() {
    printf( "x" );
}


g++.exe -Os -std=c++14  -c C:\Users\Ja\Documents\workspace\test\main.cpp -o obj\Release\main.o
g++.exe  -o bin\Release\test.exe obj\Release\main.o  -s 
Output file is bin\Release\test.exe with size 38.00 KB
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

----------------------------------------------------------

C/C++
#include <iostream>

int main() {
    std::cout << "x" << std::endl;
}


g++.exe -Os -std=c++14  -c C:\Users\Ja\Documents\workspace\test\main.cpp -o obj\Release\main.o
g++.exe  -o bin\Release\test.exe obj\Release\main.o  -s 
Output file is bin\Release\test.exe with size 16.00 KB
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))


Jestem ciekaw dlaczego tak sie dzieje tylko pod Windowsem?
P-163161
Elaine
» 2017-07-13 20:11:35
MinGW-w64 zawiera statycznie linkowaną implementację printf, ponieważ ta z msvcrt.dll nie jest do końca zgodna ze standardem. Standardowe strumienie natomiast są implementowane w libstdc++, które jest domyślnie linkowane dynamicznie.

Na innych platformach normalnie printf z libc.so jest zgodne ze standardem, więc może być użyte, dlatego wtedy i jedno, i drugie jest linkowane dynamicznie, więc rozmiar pliku wykonywalnego jest porównywalny.
P-163250
« 1 »
  Strona 1 z 1