Portál AbcLinuxu, 28. června 2025 15:42


Dotaz: dynamická knižnica linkujúca statickú knižnicu

14.8.2017 15:25 rastos | skóre: 63 | blog: rastos
dynamická knižnica linkujúca statickú knižnicu
Přečteno: 241×
Odpovědět | Admin
Mám statickú knižnicu A a v nej funkciu f().

Tú knižnicu chcem použiť pri linkovaní dynamickej knižnice B. Urobím teda:
g++ -shared libA.a zdrojakB.o -o libB.so
A zádrhel je v tom, že výsledná libB.so neexportuje funkciu f() a to preto, že žiadna funkcia v B tú funkciu nevolá. Ja by som ju tam ale napriek tomu chcel mať, pretože ju potrebujem pri linkovaní binárky, ktorá používa knižnicu B.

Dá sa to vyriešiť tak, že nebudem linkovať súbor libA.a ale budem linkovať .o, ktoré ho tvoria:
g++ -shared zdrojakA.o zdrojakB.o -o libB.so
Existuje nejaké iné riešenie? Dá sa to tomu linkeru nejako povedať?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.8.2017 22:55 NN
Rozbalit Rozbalit vše Re: dynamická knižnica linkujúca statickú knižnicu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Toto nebude ono?
Řešení 1× (buma)
15.8.2017 08:46 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: dynamická knižnica linkujúca statickú knižnicu
Áno, je to ono
g++ -Wl,--whole-archive libA.a -Wl,--no-whole-archive ... 
option --whole-archive sa musí zapnúť pred statickou knižnicou, ktorá sa má celá použiť a potom sa to zasa musí vypnúť.

Ďakujem.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.