Portál AbcLinuxu, 18. říjen 2017 20:58

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

14.8. 15:25 rastos | skóre: 60 | blog: rastos
dynamická knižnica linkujúca statickú knižnicu
Přečteno: 195×
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

Řešení 1× (rastos (tazatel))
14.8. 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. 08:46 rastos | skóre: 60 | 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.