Eντολή compile

Γενικά θέματα για το διαγωνισμό. Ερωτήσεις, προτάσεις και ό,τι άλλο ταιριάζει.
Απάντηση
jimDim
Δημοσιεύσεις: 11
Εγγραφή: Πέμ Δεκ 30, 2010 11:07 am

Eντολή compile

Δημοσίευση από jimDim » Παρ Μαρ 25, 2011 5:32 pm

C: gcc -std=c99 -O2 -DCONTEST -s -static -lm

Ξέρει κανείς τι ακριβώς είναι το "-Ο2" ή το "-DCONTEST" ή ακόμη "-s -static -Im".
Δεν πιστεύω να δημιουργηθεί πρόβλημα με αυτές τισ ρυθμίσεις,ούτε να χρειαστεί κάτι ιδιαίτερο, έτσι. Απλώς τις παραβλέπω, σωστά ?? :?:

Άβαταρ μέλους
thetrojan01
Δημοσιεύσεις: 712
Εγγραφή: Κυρ Δεκ 21, 2008 2:45 pm
Τοποθεσία: Ρόδος
Επικοινωνία:

Re: Eντολή compile

Δημοσίευση από thetrojan01 » Σάβ Μαρ 26, 2011 3:21 am

-std=c99: "compiler, χρησιμοποίησε σε παρακαλώ το πρότυπο C99..."
-O2: "κάνε βελτιστοποιήσεις όσον αφορά τον χρόνο εκτέλεσης, έλα, ξέρω ότι μπορείς!"
-DCONTEST: "αυτό το παναθεματισμένο το δελφινάκι θέλει να έχω κάνει #define το CONTEST... κάνε το εσύ για μένα please..."
-static:
-static
The HP-UX implementation of setlocale in libc has a dependency on
libdld.sl. There isn't an archive version of libdld.sl. Thus,
when the -static option is specified, special link options are
needed to resolve this dependency.

On HP-UX 10 and later, the GCC driver adds the necessary options to
link with libdld.sl when the -static option is specified. This
causes the resulting binary to be dynamic. On the 64-bit port, the
linkers generate dynamic binaries by default in any case. The
-nolibdld option can be used to prevent the GCC driver from adding
these link options.
-lm: link with the math.h library...
-s: stripάρει το εκτελέσιμο, that is, it removes the symbol table and relocation information from the executable

Με λίγα λόγια: Απολύτως τίποτα που να σε απασχολεί ιδιαίτερα.
svyr cercrv an inevrfnv cbyl tvn an gb iyrcrvf nhgb... cvtrar xnzvn ibygn yrj tj.

feedWARd
Δημοσιεύσεις: 72
Εγγραφή: Κυρ Δεκ 21, 2008 3:32 pm

Re: Eντολή compile

Δημοσίευση από feedWARd » Σάβ Μαρ 26, 2011 4:29 pm

Το -DCONTEST απλά ορίζει την μεταβλητή CONTEST. Έτσι μπορείς να κάνεις πράγματα όπως αυτό:

Κώδικας: Επιλογή όλων

#ifndef CONTEST
  prinf("%d\n", N);
#else
  fprintf(out, "%d\n", N);
#endif
Έτσι, όταν τρέχεις το πρόγραμμα τοπικά (χωρίς το -DCONTEST) να εμφανίζει την έξοδο στο stdout, ενώ στον server του grader θα γράφει κανονικά στο αρχείο. Αυτά τα #if επιλύονται από τον preprocessor πριν από το compilation, οπότε δεν επηρρεάζουν τον χρόνο εκτέλεσης.

To -lm επιτρέπει την χρήση της math.h αν χρειαστεί.
jimDim έγραψε:Δεν πιστεύω να δημιουργηθεί πρόβλημα με αυτές τισ ρυθμίσεις,ούτε να χρειαστεί κάτι ιδιαίτερο, έτσι. Απλώς τις παραβλέπω, σωστά ?? :?:
Δεν πρόκειται να δημιουργηθεί κανένα πρόβλημα, μην αγχώνεσαι. Αν κάνει compile τοπικά, θα κάνει και όταν το στείλεις στον grader.

Απάντηση