Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

1

25.03.2009, 23:06

Boost komplett kompiliert

Hallo,
ich habe gestern mir mal Boost angesehen, und wollte auch mal etwas damit arbeiten und hab mir dann das manual mal anfangsweise durchgelesen. Boost scheint ja teilweise auch nur mit den Headern zu funktionieren, aber eben nicht alle Teile davon, also wollte ich die anderen eben auch mal kompilieren, dort wurde ja beschrieben, wie man das macht. Also prompt mal dieses "Tool" Bjam da runtergeladen, und dann auch irgendwann zum kompilieren gebracht, mit --build-type=complete, weil ich dachte, dass ich ja schon alles brauch :D
Allerdings hat es dann eine ganze Weile gedauert und als ich irgendwann wieder kam, hatte ich einen neuen Ordner mit knapp 18 GIGAbyte .lib und .dlls :shock:
Jetzt meine Fragen:
1. Sind 18 GB bei sowas normal, wenn man alle Einstellungsmöglichkeiten haben möchte?
2. Was genau ist der unterschied zwischen den .libs und den .dlls, wo und wann und für was brauch ich das eine, und wann das andere?
3. Wo genau ist eig. der Unterschied zwischen Debug und Release, außer, dass Debug meist langsamer/größer ist?
4. Was brauche ich, wenn ich eine Bibliothek mit in die .exe (oder was auch immer am ende rauskommt) einbinden will? und wie mache ich sowas? (nennt sich das dann statisch linken?)
5. Ich habe auch jede Menge dateien, mit einem -mt im namen, ich denke das steht für Multi-threaded oder so? Was genau bedeutet das, und wann verwende ich das?

Ich weiß, sind wieder Grundlagenfragen, aber irgendwie hab ichs noch nirgends richtig erklärt bekommen :D

PS: Bin auch mit guten Links zu dem Thema einverstanden :)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

26.03.2009, 01:06

dll nimmt man zum dynamischen linken und lib fürs linken, wenn man eine statische lib erstellt, so ist alles in der lib enthalten. Kommt aus den Zeiten wo man aus Platzgründen dynamische libs nahm um sich diese zu teilen.
Debug enthält keine Optimierungen und es werden Symbole zum debuggen eingefügt. Außerdem wird eine Debugdatabase erstellt, die man zum debuggen braucht (ansonsten bekommt der Debugger nicht raus an welcher im Code er gerade ist).
Was du brauchst hängt davon ab was du willst :P.
Multithreaded runtime nutzt man übrigens nur noch. Die singlethreaded runtime wird wohl bald abgesägt, aber gebraucht wird das weil eine exe atm noch singlethreaded, singlethreaded-DLL, singlethreaded-Debug, singlethreaded-Debug-DLL (zumindest beim alten vs2003) oder auch multithreaded, multithreaded-DLL, multithreaded-Debug, multithreaded-Debug-DLL sein kann. Und je nachdem wie die exe eingestellt ist, muss auch die lib entsprechend eingestellt sein.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

n0_0ne

1x Contest-Sieger

  • »n0_0ne« ist der Autor dieses Themas
  • Private Nachricht senden

3

26.03.2009, 09:08

Wow, das hat ja fast alles beantwortet :D

Was ich jetzt noch gern wissen möchte ist, was denn multithreaded jetzt genau bedeutet... Mit der SFML gibt es auch die Möglichkeit neue Threads, die dann parallel laufen können zu starten. Wenn man jetzt eine mt-exe erstellen lässt, sucht der Compiler sich dann selbst stellen raus, die parallel laufen können, oder "ebnet" er nur den Weg für selbst erstellete Threads?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

26.03.2009, 10:51

Das ganze bezieht sich wie erwähnt auf die runtime. Soweit ich weiß kann man auch mit einer singlethreaded runtime threads erstellen. Das problem ist nur, dass dann die runtime eben nur auf singlethreaded ausgelegt ist und daher bei Nutzung in Kombination mit Threads keinerlei Sicherheitsvorkehrungen gegen raceconditions usw. herrscht.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

5

26.03.2009, 13:12

Zitat von »"n0_0ne"«

Wenn man jetzt eine mt-exe erstellen lässt, sucht der Compiler sich dann selbst stellen raus, die parallel laufen können, oder "ebnet" er nur den Weg für selbst erstellete Threads?


Ich denke der ebnet nur den Weg. Gehen muss man ihn selber.

Das andere wäre, falls es funktioniert, zwar sensationell, aber vermutlich hat das noch keiner so hingekriegt dass es nicht falsch optimiert, oder?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

26.03.2009, 14:16

Gibt es schon. Macht z.b. OpenMP. Aber das mt bezieht sich nur auf die runtime. Nicht mehr und nicht weniger afaik.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

7

26.03.2009, 20:31

Re: Boost komplett kompiliert

Zitat von »"n0_0ne"«

Allerdings hat es dann eine ganze Weile gedauert und als ich irgendwann wieder kam, hatte ich einen neuen Ordner mit knapp 18 GIGAbyte .lib und .dlls :shock:
Normalerweise kompiliert man auch nur, was man braucht. ;)

In dieser Hinsicht sind vorkompilierte Header ideal - sie kompilieren den Code zwar nicht wirklich, aber parsen ihn - dadurch kann man auch bei reinen Template-Headern sehr viel Kompilierzeit sparen.

Werbeanzeige