Pierwsze kroki jakie należy wykonać są dokładnie opisane w poprzednim artykule. Różnica jest przy kompilowaniu i tworzeniu pliku SO (shared object - objekt współdzielony, odpowiednik windowsowego pliku DLL).
W celu kompilacji wywołujemy kod:
gcc -fPIC -c DHT11.c -I $JAVA_HOME/include -I /usr/local/include/
Należy upewnić się, że mamy ustawioną zmienną środowiskową JAVA_HOME.
Aby to sprawdzić należy wywołać:
echo $JAVA_HOMEJeśli zostanie zwrócony pusty wynik to trzeba ustawić tą zmienną przez polecenie:
export JAVA_HOME="scieżkaDoJavy"
Po wywołaniu powyższej komendy kompilacji zostanie utworzony plik DHT11.so. Następnie wywołujemy:
gcc DHT11.o -shared -o libDHT11.so -Wl,-soname,DHT11 -L/usr/local/lib -lwiringPi
gdzie:
-o - nazwa pliku wynikowego, musi być z przedrostkiem "lib", nazwa musi się zgadzać z nazwą w klauzuli System.loadlibrary() w Javie
-L/usr/local/lib - ścieżka gdzie szukać skompilowanego kodu źródłowego biblioteki (plików obiektowych)
-lwiringPi - linkujemy do kompilatora bibliotekę wiringPi - wcześniej należy ją zainstalować zgodnie z instrukcjami ze strony http://wiringpi.com/download-and-install/
Jeśli nie dodamy -L/sciezka -lwiringPi to będziemy mieli do czynienia z błędem:
java: symbol lookup error: ..../libDHT11.so: undefined symbol: pinMode
Jeśli nie dodamy -L/sciezka -lwiringPi to będziemy mieli do czynienia z błędem:
java: symbol lookup error: ..../libDHT11.so: undefined symbol: pinMode
Zostało sprawdzenie czy wszystko działa:
java -Djava.library.path=. DHT11
I na ekranie konsoli uzyskamy odczyt temperatury z czujnika DHT11
Brak komentarzy:
Prześlij komentarz