Witam, możecie mi polecić darmowe środowisko programowania do c? Właśnie zaczynam naukę w tym języku i jak zobaczyłem skompilowany program pod konsole co w sumie nic nie robi do 1,8mb to mnie przestraszyło.
Visual C++
Co ma środowisko do rozmiarów skompilowanych programów? Ty na pewno chcesz, żeby Ci IDE polecić, a nie inną implementację biblioteki standardowej? Bo na przykład taki musl jest znacząco mniejszy od glibca, więc jak będziesz linkował do niego, to programy będą mniejsze.
No i zawsze można też linkować statycznie…
Pamiętaj o kilku rzeczach:
- 1.8mb na start - straszne, ale popatrz na tępo rośnięcia tej wielkości - jest ono znikome. (Tak tylko przypominam, że tyle waży średni obrazek)
- Możesz optymalizować program pod kątem wielkości załączając odpowiednią flagę kompilacji.
- Jeśli tak bardzo Ci to przeszkadza, to możesz tworzyć programy w językach skryptowych - jak tylko zapomnisz o interpreterze ważącym ze wszystkim swoim do 300mb, to twoje programy można zacząć mierzyć w kb!
edit: ten link może się przydać: http://web.archive.org/web/20111214171623/http://www.phreedom.org/solar/code/tinype/
A nie jest przypadkiem tak, że jeśli tam jest ponad megabajt, to muszą być jakieś dołączane nie wiadomo jakie libki na wstępie?
Bo skompilowałem teraz HelloWorlda (który tylko <stdio.h>
dołączał) za pomocą gcc
i wyskoczyło mi tylko 8,4 kilobajta (na Maku co prawda).
O ile nie jestem żadnym znawcą od C, to ciekawi mnie skąd ta różnica. Co dokładnie zawiera się w tym megabajcie i jak to można sprawdzić? Może ktoś wie?
Poza tym autor wątku nie napisał czego sam używa do kompilacji.
LukeJL napisał(a):
Bo skompilowałem teraz HelloWorlda (który tylko
<stdio.h>
dołączał) za pomocągcc
i wyskoczyło mi tylko 8,4 kilobajta (na Maku co prawda).
Pod Linuksem też natywne binarki są małe, bo w systemie masz podstawowe biblioteki do danego języka itp.
Tylko, że pod Windowsem jest tendencja, że program ma być samowystarczalny.
Jak chcesz zobaczyć jakie biblioteki używa twoja 8 kB binarka pod Mac OS użyj odpowiedniej komendy, np.
$ cd /bin/
$ otool -L cat
cat:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
Pod Linuksem:
$ cd /bin
$ ldd cat
Ale nie podam wyjścia, bo jestem pod Makiem :)
@LukeJL pewnie default to jakieś statyczne kompilowanie libc do binarki i jeszcze ładowanie symboli debuggera i nagle binarka puchnie ;)
@autor CLion EAP
Jeśli zaczynasz naukę programowania, to jest to ostatnia rzecz którą powinieneś się teraz interesować. Jakie biblioteki będą włączane w trybie debug, co to jest tenże debug, co oznacza dynamiczna i statyczna konsolidacja oraz do czego ew. służy strip (lub analogiczne narzędzie), jeszcze dojdziesz. Wybierz wygodne IDE i sensowny kompilator i tyle.
jest to srodowisko dev-c++. nie podmienialem nigdy nic w srodowiskach zeby lepiej wyszlo i jakos nie mam pojecia jak to zrobic, dlatego preferuje osobne srodowisko gdzie jest juz to ladnie zrobione. i nie, nie jestem kompletnie zielony jak kolega podejrzewa.
Minimalny program w C to ok. < 10 kB po skompilowaniu.
Ten ma np. 6 kB pod Linux / gcc:
int main(int argc, char **argv) {
return argc;
}
gcc -fomit-frame-pointer -falign-functions=1 -mpreferred-stack-boundary=4 -falign-jumps=1 -falign-loops=1 -fno-stack-protector -fno-unroll-loops -ffast-math minimal.c
strip -S --strip-unneeded --remove-section=.note.gnu.gold-version --remove-section=.comment --remove-section=.note --remove-section=.note.gnu.build-id --remove-section=.note.ABI-tag a.out
ls -l
-rwxrwxrwx 1 root root 6024 Feb 18 09:52 a.out
-rwxrwxrwx 1 root root 53 Feb 18 09:43 minimal.c
Jak poszukasz hasła "gcc compile c smallest executable" to znajdziesz np.:
http://ptspts.blogspot.com/2013/12/how-to-make-smaller-c-and-c-binaries.html
http://www.electro.fisica.unlp.edu.ar/temas/p5/gcc.html
http://timelessname.com/elfbin/
Mniejsze programy minimalne możesz uzyskać wykorzystując:
- ASM - jeśli masz dużo czasu (i zależne od systemu)
- bash - jeśli masz u użytkownika basha (najlepsze dla: Linux)
- .NET / C# - jeśli masz .NET (najlepsze dla: Windows)
Oczywiście w C# jeśli zaczniesz pisać coś sensowniejszego to program Ci spuchnie pewnie. W Bash-u - podobnie, chociaż nie aż tak.
Jeśli chodzi o środowiska IDE, to większość jest darmowych, w tym Visual Studio Community, Eclipse CDT, Code::Blocks, Qt Creator, Netbeans, C++ Builder, Pelles C.
Niewiele z nich jest dedykowanych stricte C.
Środowisko Pelles C jest wyjątkiem.
Pelles C bardzo przypadło mi do gustu, dziękuję.