Egy C fordító hogy találja meg a header fájl alapján, melyik lib-ben van a szükséges tárgykód?
Próbáltam én is lib-et csinálni pár hasznos függvényből, de úgy tűnik, csak akkor működik, ha megmondom a tlink-nek, hogy fordítsa hozzá. Nem értem a gyári lib-ek, obj-k hogy kerülnek bele az exe-be.
A másik, amit nem értek, hogy ha egy külső lib-ből függvényt használok, akkor csak annak a kódját fordítja bele az exe-be, vagy az egész lib-et? Vagy azt a "modult"?
Ha statikus linkelésű libraryt használsz, akkor a tárgykódba belekerül a library kódja.
Ha dinamikust, akkor nem kerül bele, csak egy hivatkozás. Ekkor persze a kész .exe fájl mellé mellékelni kell a library fájlokat(windows alatt általában dll).
A fordító nem tudja, és nem is kell tudnia, hogy hol vannak a header fájlban hivatkozott dolgok implementációi. Ez a linker dolga. A linkernek meg kell adni, hogy milyen libraryket használsz. Ezzel általában nem kell foglalkoznod, ha egy jó IDE-t használsz akkor az megcsinálja helyetted.
Értem. Tehát a linkernek muszáj megadnom, hogy az enyémben is keressen implementációt.
Sima TC-t használok, parancssoros formában, az mégis megtalálja a gyári (pl. printf) kódot. Pedig sokszor a lib neve nem is azonos a header fájl nevével. Aztat hogy csinálja? Én nem tudok olyat?
Ebben nem vagyok 100%-ig biztos, de szerintem az egész statikus lib-et belerakja, de szerintem csak emiatt nem érdemes szétszedni a libet.
Ha nagyon zavar a nagy méretű exe, akkor készíts dinamikus libraryket.
Köszönöm! Valahogy tuti kipróbálom! :D (csak nem tudom, hogy..)
Lehet, hogy hülyeséget kérdezek, bocs: A C (linker?) a nem hívott függvényeket nem paterolja ki a kész kódból optimalizáláskor?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!