Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
linkare statica libc
Last Updated: Apr 21 2014 13:25, Started by
psycho22
, Apr 20 2014 23:57
·
0
#1
Posted 20 April 2014 - 23:57
Cand compilez un cod care foloseste niste functii din biblioteca standard a lui C, fara sa pun vreun parametru la compilator, legarea se face automat dinamic. Cum pot sa compilez static? Daca vreau ca implementarea functiei sa fie in fisierul meu .exe si nu in msvcrt.dll, cum fac asta? Unde gasesc libc.a?
|
#2
Posted 21 April 2014 - 06:18
GCC foloseste -static.
Nu cred ca pe runtime il poti lega asa, msvcrt.dll se afla in orice sistem Windows. |
#3
Posted 21 April 2014 - 10:50
Daca folosesti Visual Studio:
Untitled.png 61.59K 11 downloads Daca folosesti gcc sub Windows, mi se pare ca nu poti scapa de msvcrt.dll fiindca gcc chiar se bazeaza pe acele functii sa nu mai fie nevoiti ei sa le implementeze. |
#4
Posted 21 April 2014 - 12:37
neagu_laurentiu, on 21 aprilie 2014 - 06:18, said:
GCC foloseste -static. Nu cred ca pe runtime il poti lega asa, msvcrt.dll se afla in orice sistem Windows. Edited by psycho22, 21 April 2014 - 12:40. |
#5
Posted 21 April 2014 - 12:49
MinGW e similar cu a te scarpina la urechea dreapta cu mana stanga. Sub Unix-like & GCC poti lega static libc cum si VC++ o face pe Windows. Dar in cazul MinGW & msvcrt.dll nu te incurca fiindca e in sistem acel dll.
E un .dll specific GCC-ului portat sub Windows si acesta trebuie legat sau carat dupa tine aici. Mai sunt si libmsvcrtXX.a dar n-am intrat in detalii ca nu ma pasioneaza prea tare: Link with gcc -static -static-libgcc -static-libstdc++ and you won't need libgcc_s_dw2-1.dll and libstdc++-6.dll Edited by neagu_laurentiu, 21 April 2014 - 13:01. |
#6
Posted 21 April 2014 - 12:59
Am inteles. Multumesc pentru raspunsuri.
Totusi, nu inteleg ceva: acele dll-uri contin cod obiect. O biblioteca statica(lib.a) contine si ea o colectie de coduri obiect. Daca compilatorul are acces la implementarea functiilor (la msvcrt.dll), de ce nu ar putea sa integreze in .exe functiile necesare? Sa deschizi un proces cu o functie din dll si sa te folosesti de el nu e acelasi lucru cu a integra intr-un singur proces functia respectiva (acel .exe fiind procesul)? Am inteles ca nu pot lega static biblioteca standard cu MinGW, dar avand in vedere ca sunt in perioada de formare, mi-ar prinde bine sa inteleg si de ce nu poate. |
#7
Posted 21 April 2014 - 13:08
Nu intotdeauna ai cod ci si redirectare la un .so/.dll
E mai avantajos un .so/.dll pentru ca partajeaza acelasi cod la N aplicatii, nu e nevoie ca fiecare sa incarce si ocupa memoria cu aceeasi bucata de cod (am zis cod nu date, acestea din urma sunt locale pt. fiecare proces). Edited by neagu_laurentiu, 21 April 2014 - 13:09. |
#8
Posted 21 April 2014 - 13:25
.lib.a se numeste biblioteca de import. Ea poate contine intreg codul functiilor (biblioteca statica), sau poate avea doar redirectionari spre un .dll/.so (biblioteca dinamica).
Dintr-un .dll/.so nu poti obtine un .lib.a cu intreg codul, ci doar unul care sa redirectioneze inapoi spre acel .dll/.so, doar daca ai codul sursa la dispozitie, iar codul pentru msvcrt.dll nu-i disponibil lui gcc |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users