Mam program, który implementuje system wtyczek przez dynamiczne ładowanie funkcji z niektórych plugin_name.so (jak zwykle).GCC/Linux: dodanie biblioteki statycznej do .so?
Ale z kolei mam statyczną bibliotekę "pomocnika" (pozwala wywołać ją helper.a), której funkcje są używane zarówno z głównego programu, jak i głównej funkcji wtyczki. Nie muszą w żaden sposób współdziałać, są tylko funkcjami pomocniczymi do manipulowania tekstem i takimi.
Ten program, po uruchomieniu, nie może zostać ponownie załadowany lub uruchomiony ponownie, dlatego oczekuję nowej funkcji "pomocnika" z wtyczki, a nie z głównego programu.
Więc moim zadaniem jest ... czy można wymusić ten "kod funkcji wtyczki" w .so, aby użyć (statycznie połączyć z?) Inną (prawdopodobnie nowszą) wersję "pomocnika" niż główny program?
Jak można to zrobić? być może przez statyczne łączenie lub w inny sposób dodawanie helper.a do plugin_name.so?
Chciałbym dodać, że nie chcę lub nie chcę korzystać z nowej biblioteki pomocniczej z głównego programu. Chciałbym po prostu połączyć każdą nową wtyczkę z nowszą/lepszą biblioteką pomocniczą. – conejoroy
Czy istnieje powód, dla którego nie można używać dynamicznego łączenia dla funkcji pomocnika? –
Po uruchomieniu główny program nie może zatrzymać wykonywania, nawet w celu przeładowania nowszego helpera.so .. i program potrzebuje bardzo prostej funkcjonalności helpera, ponieważ jest tylko symbolem zastępczym dla wtyczek. więc wolę skompilować całą wtyczkę ponownie, jeśli mam nową/ulepszoną lub rozszerzoną bibliotekę pomocniczą. Myślę, że bardziej praktyczne jest rozpowszechnianie jednego .so (wtyczki) niż dwa .so (wtyczka i najbardziej aktualny pomocnik, z którego korzysta wtyczka). – conejoroy