Wpis z mikrobloga

Cześć,

Robię cross-compilację programu na urządzenie z ARMową architekturą. Problem polega na tym, że libki, które używa program leżą sobie na docelowym urządzeniu, a na hoście ich nie mam. Libek (.so) i zależności pomiędzy nimi jest bardzo dużo, a chciałbym uniknąć ich przerzucania na swoją maszynę lub cross-compilacji. Wiem, że da się linkerowi powiedzieć, żeby ignorował "unresolved-symbols", ale chciałbym to jakoś ładniej rozwiązać. Stąd pytanie:
Czy da się powiedzieć linkerowi, że przy kompilacji tych libek nie znajdzie, a będą one na targecie?

#cpp #linux #programowanie #programista15k #cmake
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Parseval: ld ma opcję --unresolved-symbols, używałem jej kiedy linker czepiał się o symbole, które faktycznie nie były używane, więc nie wiem czy pomoże w takim przypadku, można spróbować. Najwyżej dostaniesz error w runtimie ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@Parseval: Na Debianie można instalować biblioteki Linuksowe z innych architektur i używać. Natomiast chyba lepiej do tego chroota mieć - jak chcesz
  • Odpowiedz
@Parseval: musisz mieć sysroot który dajesz cross kompilatorowi i ma biblioteki. Najprościej zrzucić całą partycję / z urządzenia. Reszta to kwestia jak masz ustawiony projekt ale pod mesonem czy cmake w miarę trywialne.
  • Odpowiedz
@Parseval: Niezbyt ładnie, ale równie dobrze możesz sobie przygotować mock'a tych bibliotek z odpowiednimi funkcjami i parametrami. Nazwy powinny się "zmanglować" tak samo. Choć prawdopodobnie ta metoda w przypadku jakichś bardziej złożonych rzeczy nie zadziała, bo musiałbyś odtwarzać też wszystkie klasy i struktury, szkoda roboty. Moim zdaniem, jeśli już planujesz to zrobić porządnie to ustaw sobie porządnie środowisko... albo użyj buildroota czy innego yocto.
  • Odpowiedz