2017-08-22 29 views
5

Próbuję stworzyć aplikację C++ z opencv i udostępnić aplikację innym użytkownikom, którzy nie mają zainstalowanego Opencv na swoim komputerze. Jak mogę to zrobić?Jak mogę wykorzystać Opencv na jednym komputerze z systemem Linux na drugim?

Próbowałem:

  1. skopiowane wszystkie pliki nagłówkowe, pliki źródłowe i biblioteki w jakiejś ścieżki/home/myfolder.
    1. Stworzyłem aplikację i powiązałem wszystkie pliki przechowywane w/home/myfolder.
    2. Ustaw zmienną środowiskową LD_LIBRARY_PATH na point/home/myfolder w pliku .bashrc, aby aplikacja mogła znaleźć biblioteki w czasie wykonywania.

udało mi się skompilować na moim komputerze, ale gdy dzielę folderu z innego komputera i połączyć wszystkie biblioteki, mam niezdefiniowany błąd odniesienia dla OpenCV.

Dzięki

+0

Zakładając, że jest to ta sama architektura i chcesz tylko udostępnić samą aplikację, dlaczego nie wystarczy przekazać plik wykonywalny na inny komputer i uruchomić? (oczywiście będziesz musiał statycznie połączyć biblioteki OpenCV). – Yotam

+0

Dzięki za odpowiedź. Oba komputery są 64-bitowe. Jeśli udostępniam tylko plik wykonywalny, musi on być połączony ze wszystkimi bibliotekami, takimi jak opencv, których nie ma na innym komputerze. Tak więc ustawiam zmienną ścieżkę środowiska w .bashrc, aby wskazać folder sharedand ma pliki biblioteki Opencv, ale nadal napotykam na niezdefiniowany błąd referencyjny. – sumit

+0

Czy próbowałeś skompilować go za pomocą łączenia statycznego? – api55

Odpowiedz

0

Ta odpowiedź ma wpływ na bezpieczeństwo - wziąć pod uwagę przed użyciem i stosować tylko w sieci prywatnej.


Można pozwolić innym użytkownikom ssh do komputera i przekazuje połączenie X11 do własnego urządzenia za pomocą -X lub -Y opcje.

Więc inny użytkownik zrobi:

ssh -Y [email protected] yourApp 

Trzeba będzie pomyśleć o tym, czy chcesz zaufać tej osobie, aby zalogować się za ciebie, czy chcesz dokonać innego użytkownika na komputerze, które może uruchomić Twoją konkretną aplikację, a nie inną.


Inną opcją może być niech inny użytkownik, aby jego wyświetlacz X11 dostępne do komputera przez niego wpisując następujące jego maszyny:

xhost + 

Następnie, można uruchomić aplikację na maszyna, ale z wyświetlaczem przekazany jego maszyny - ten sposób nie musi logować się do komputera lub mieć hasło:

DISPLAY=<otherPC>:0 yourApp 
1

odpowiedź jest łączenie statyczne. Jeśli nie dbasz o rozmiar pliku wykonywalnego, a maszyna docelowa nie ma wymaganych bibliotek, po prostu podaj je w pliku wykonywalnym. Proszę spojrzeć na pytanie this w celach informacyjnych.