• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 16, 2025, 23:58:02 pm

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 16, 2025, 23:58:02 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Ισραήλ - Ιράν: Πόλεμος στ...
by Yamal
[Today at 23:46:31]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[Today at 22:46:54]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[Today at 19:49:00]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[Today at 16:56:56]

[Εφ.Θερμοδυναμική] Γενικέ...
by Λαμπτήρας
[Today at 15:55:08]

[Αρχές Οικονομίας] Να επι...
by _Trob
[Today at 13:28:21]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[Today at 12:13:45]

Αποτελέσματα Εξεταστικής ...
by Nikos_313
[Today at 12:01:53]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by George_RT
[Today at 10:22:18]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[Today at 01:56:37]

Αντικατάστασης πυκνωτή σε...
by nmpampal
[June 15, 2025, 16:25:56 pm]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]

Ρυθμίσεις Θεμάτων της Ανώ...
by el mariachi
[June 14, 2025, 11:56:45 am]

Πότε θα βγει το μάθημα; -...
by Nikos_313
[June 14, 2025, 10:00:55 am]

Αρχείο Ανακοινώσεων [Arch...
by Nikos_313
[June 14, 2025, 09:58:14 am]

Αλέξης Τσίπρας, η επιστρο...
by Yamal
[June 14, 2025, 04:42:23 am]

Έναρξη Δηλώσεων Συμμετοχή...
by IEEE SB
[June 14, 2025, 00:10:19 am]
Στατιστικά
Members
Total Members: 9960
Latest: valco08
Stats
Total Posts: 1426678
Total Topics: 31711
Online Today: 226
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 46
Guests: 98
Total: 144
parvanitid
kpap17
mprova
ArchieHadCells
mavropan
evax
Yamal
kouf
alex_samaras_
dimitrisblioumis
taniakrg
agapi
LambisTr
abiki
Athinaaz
boulionis
Tsomp
Giorgos2222
alababamas4444
Η ΤΡΑΠΟΥΛΑ ΤΟΥ ΠΑΠΠΟΥ ΜΟΥ
Mr Watson
maestros
Mr Z
Leftor
Nikos_313
cchristodoulou
AODON
Pcsc
cealexop
ThanosKoutsoump
tasos gourd
iliaskou
Antreas17
miltan8
tinidou
mayia psarikoglou
DimGeo
Arakapas
mixkats
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Η γραμματεία είναι ανοιχτή καθημερινά 12:00-13:30 Tongue
THMMY.gr > Forum > Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα > Περί Υπολογιστών... > Software > Προγραμματισμός (C, VB, Delphi, PHP, ASP...) > C / C++ / C# (Moderators: chatzikys, PolarBear) > Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
0 Members and 1 Guest are viewing this topic.
Pages: [1] 2 Go Down Print
Author Topic: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο  (Read 2981 times)
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« on: August 16, 2012, 14:48:00 pm »

Φτιάχνω ένα πρόγραμμα και κάνω include διάφορες βιβλιοθήκες που έχω εγκατεστημένες στο σύστημά μου.
Το κάνω compile και παράγεται το εκτελέσιμο.

Προσπαθώ να το τρέξω σε διαφορετικό υπολογιστή που λείπουν αυτές οι βιβλιοθήκες και βγάζει προφανώς σφάλμα.

Πώς μπορώ λοιπόν να ενσωματώσω αντί να συνδέσω τις απαραίτητες βιβλιοθήκες;

Μιλάμε πάντα για Linux.  Smiley
Logged

http://www.mozilla.org/en-US/firefox/new/
SolidSNK
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4617


free()'d and attuned


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #1 on: August 16, 2012, 15:11:39 pm »

Χρειάζεσαι static linking. Δες το -static option στον gcc. Βέβαια υπάρχει μεγάλη πιθανότητα να έχεις ένα τεράστιο εκτελέσιμο, έτσι δε συνηθίζεται.
Logged

"Savior, conqueror, hero, villain. You are all things, Revan, and yet you are nothing. In the end you belong to neither the light nor the darkness. You will forever stand alone."
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
deleted
« Reply #2 on: August 16, 2012, 15:13:39 pm »

deleted
« Last Edit: June 14, 2015, 18:24:26 pm by BOBoMASTORAS » Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #3 on: August 22, 2012, 12:42:33 pm »

Ευχαριστώ για τις απαντήσεις.
Τώρα ένα καινούριο "πρόβλημα"

Δημιούργησα 1 πρόγραμμα με διάφορες κλάσεις χωρίς headers του τύπου
class1.cpp
class2.cpp
main.cpp
όπου η main έχει include ta *cpp
και το κάνω compile me
g++ -g0 -O3

στη συνέχεια τον ίδιο κώδικα τον περνάω στο Eclipse και τον κάνω πιο σωστά δομημένο με headers δλδ
class1.h
class1.cpp
class2.h
class2.cpp
main.cpp
όπου η main έχει include τα  *h
και το κάνω compile δημιουργώντας cmake.
(η εντολή compiler είναι g++ -g0 -O3 -c)

Ποιο είναι το πρόβλημα;
Το πρόγραμμα στη 2η περίπτωση είναι 1 τάξη μεγέθους πιο αργό
έχει να κάνει κάτι με το cmake?
το makefile  το παράγει αυτόματα το Eclipse
Logged

http://www.mozilla.org/en-US/firefox/new/
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
deleted
« Reply #4 on: August 22, 2012, 13:33:28 pm »

deleted
« Last Edit: June 14, 2015, 18:24:15 pm by BOBoMASTORAS » Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #5 on: August 22, 2012, 13:49:46 pm »

οχι, το execution time εννοώ

EDIT: επίσης, η διαφορά δεν είναι μόνο
Quote
Λογικά το ότι έχεις σπάσει τον κώδικα σε h/cpp

αλλά ο compiler τρέχει και με το extra argument "-c"
Quote from: fugiFOX on August 22, 2012, 12:42:33 pm
(η εντολή compiler είναι g++ -g0 -O3 -c)
« Last Edit: August 22, 2012, 13:57:32 pm by fugiFOX » Logged

http://www.mozilla.org/en-US/firefox/new/
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
deleted
« Reply #6 on: August 22, 2012, 17:11:20 pm »

deleted
« Last Edit: June 14, 2015, 18:23:04 pm by BOBoMASTORAS » Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #7 on: August 22, 2012, 17:26:53 pm »

Quote from: bob-the-builder on August 22, 2012, 17:11:20 pm
το -c δεν έχει κάποια επίδραση

Μάλλον έχετε κάποια αλγοριθμική αλλαγή η οποία αλλάζει τον χρόνο εκτέλεσης.

τι εννοείς αλγοριθμική αλλαγή;
Logged

http://www.mozilla.org/en-US/firefox/new/
Issle
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Gender: Male
Posts: 602



View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #8 on: August 22, 2012, 23:06:15 pm »

Όταν χωρίζεις τον κώδικά σου σε headers και implementations ( cpp ) είναι πιθανόν ο compiler να μην μπορεί να κάνει συγκεκριμένα optimizations. Κυρίως γιατί όταν χτίζει ένα class ( cpp ) που αναφέρεται μέσω header σε ένα άλλο class, δεν γνωρίζει τον κώδικα του άλλου class τη στιγμή που κάνει compiling ( γιατί τα χτίζει ανεξάρτητα και τα κάνει linking μετά ).

Με μια μικρή επιφύλαξη.

PS: Εδώ φαίνεται η ανωτερότητα της java μπροστά στην C/C++. Hotspot, JIT, AOT compiler Wink
« Last Edit: August 22, 2012, 23:09:06 pm by Issle » Logged

We can be a nation that believe in war,
And still tells the world that we don't.
Let the flag for hypocrisy fly high from every pole
We're a little bit country, and we're a little bit rock n' roll
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #9 on: August 22, 2012, 23:38:48 pm »

Quote from: fugiFOX on August 22, 2012, 17:26:53 pm
Quote from: bob-the-builder on August 22, 2012, 17:11:20 pm
το -c δεν έχει κάποια επίδραση

Μάλλον έχετε κάποια αλγοριθμική αλλαγή η οποία αλλάζει τον χρόνο εκτέλεσης.

τι εννοείς αλγοριθμική αλλαγή;


με λίγα λόγια αλλάξατε κάτι στον κώδικα.

κάνε compile / link με -pg -O0 -g3
CXXFLAGS=-pg -O0 -g3
LDFLAGS=-pg

Στη συνέχεια μπες στο φάκελο που είναι το εκτελέσιμο και τρέξ το πχ ./executable (θα τρέχει πολύ πιο αργά, μειώστε τον όγκο των δεδομένων / επαναλήψεων)

Θα δημιουργηθεί μετά το τέλος της εκτέλεσης ένα αρχείο gmon.out

Τρέξε από κονσόλα gprof executable

θα εμφανιστούν τα στατιστικά του χρόνου εκτέλεσης ανά συνάρτηση. Στην αρχή θα υπάρχει υπόμνημα για το τι είναι τι. Αν σας την σπάει το υπόμνημα τρέχετε gprof -b executable

Δείτε ποια συνάρτηση σας καθυστερεί και καν τε optimizations

Συνήθως ισχύει ο κανόνας 10/90. Δλδ το 10% του κώδικα τρέχει το 90% του χρόνου.

Κάν' τε optimizations μόνο εκεί και επαναλάβετε.

Quote from: Issle on August 22, 2012, 23:06:15 pm
PS: Εδώ φαίνεται η ανωτερότητα της java μπροστά στην C/C++. Hotspot, JIT, AOT compiler Wink

άμα κάποιος είναι άμπαλος έτσι είναι. Αν όμως γνωρίζει με τη java νοιώθει ανάπηρος.
« Last Edit: August 22, 2012, 23:44:23 pm by bob-the-builder » Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #10 on: August 23, 2012, 11:14:32 am »

to  gprof το έχουμε κάνει ήδη.
Ξεκινήσαμε αρχικά με απλό text editor kai terminal g++
κάναμε  gprof και είδαμε τι παίζει και ίσχυε ακριβώς αυτό το 90-10.
Το βελτιώσαμε, έτρεχε πλέον γρήγορα και είπαμε να το μετατρέψουμε σε κλάσεις.
Όλος ο κώδικας έχει παραμείνει ο ίδιος.
Μιλάμε για ακριβώς τα ίδια αρχεία, απλά μεταφέραμε τα headers από τα cpp σε ξεχωριστά .h και άλλαξαν λίγο τα includes

Quote from: bob-the-builder on August 22, 2012, 23:38:48 pm
άμα κάποιος είναι άμπαλος έτσι είναι. Αν όμως γνωρίζει με τη java νοιώθει ανάπηρος.
συμφωνώ απολύτως. πλέον όχι μόνο δεν τολμώ να γράψω κάτι σε java, αλλά και εάν δω κανένα πρόγραμμα γραμμένο σε java... χαιρετώ.
Logged

http://www.mozilla.org/en-US/firefox/new/
megapixel
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Gender: Male
Posts: 777


θέλω φρέσκο κρέας!!!


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #11 on: August 23, 2012, 12:04:53 pm »

Να ρωτησω και εγω κατι παρομοιο, αν χρειαζεται σε αλλο θεμα ας το μεταφερει ενας διαχειριστης.


Εχω γραψει ενα προγραμμα σε C++ που χρησιμοποιει πολλες βιβλιοθηκες.

Οταν τρεχω το exe στο pc μου ολα οκ, οταν το τρεχω σε αλλο pc λεει οτι λειπει το msvcp100d dll αρχειο και δε μπορει να τρεξει.

Βεβαια, κατα το compile me MS Visual Studio 2010 στο output βγαζει :
" 'das.exe': Loaded 'C:\Windows\SysWOW64\msvcp100d.dll', Cannot find or open the PDB file "

Φυσικα βγαζει οτι λειπουν και αλλα.
Δεν ξερω αν εχει σημασια αυτο.

Αλλα στα errors δεν εχει τιποτα και το compile γινεται κανονικα.


Μηπως χρειαζεται να ενσωματωσω και εγω τις βιβλιοθηκες στο exe?
Logged

BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #12 on: August 23, 2012, 17:11:40 pm »

Quote from: fugiFOX on August 23, 2012, 11:14:32 am
Το βελτιώσαμε, έτρεχε πλέον γρήγορα και είπαμε να το μετατρέψουμε σε κλάσεις.
Όλος ο κώδικας έχει παραμείνει ο ίδιος.

Όπα! τι εννοείς αποφασίσατε να το μετατρέψετε σε κλάσεις?

Δλδ πριν είχατε μόνο συναρτήσεις (procedural κώδικα) ?

Αν είναι έτσι τότε λογικό να τρέχει πιο αργά. Η C++ είναι πιο αργή από τη C.
Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #13 on: August 23, 2012, 17:36:00 pm »

Quote from: bob-the-builder on August 23, 2012, 17:11:40 pm
Quote from: fugiFOX on August 23, 2012, 11:14:32 am
Το βελτιώσαμε, έτρεχε πλέον γρήγορα και είπαμε να το μετατρέψουμε σε κλάσεις.
Όλος ο κώδικας έχει παραμείνει ο ίδιος.

Όπα! τι εννοείς αποφασίσατε να το μετατρέψετε σε κλάσεις?

Δλδ πριν είχατε μόνο συναρτήσεις (procedural κώδικα) ?

Αν είναι έτσι τότε λογικό να τρέχει πιο αργά. Η C++ είναι πιο αργή από τη C.

όχι ρε συ, δεν το έθεσα σωστά. Η μοναδική αλλαδή είναι η παρακάτω.
Quote from: fugiFOX on August 23, 2012, 11:14:32 am
Μιλάμε για ακριβώς τα ίδια αρχεία, απλά μεταφέραμε τα headers από τα cpp σε ξεχωριστά .h και άλλαξαν λίγο τα includes

Logged

http://www.mozilla.org/en-US/firefox/new/
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Re: Ενσωμάτωση όλων των βιβλιοθηκών στο εκτελέσιμο
« Reply #14 on: August 23, 2012, 17:47:50 pm »

Πόση διαφορά βλέπετε στην ταχύτητα εκτέλεσης?

Είσαι σίγουρος ότι τα includes που άλλαξαν "λίγο" δεν επιδρούν τόσο σημαντικά?
Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
Pages: [1] 2 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...