Warning: Undefined array key "userinfo" in /home/pp/.public_html/lib/plugins/indexmenu/action.php on line 54
Instalacja środowiska do rozwiązywania zadań programistycznych w systemie testów automatycznych Mrówka [Podstawy Programowania]
Warning: Undefined array key "stylesheets" in /home/pp/.public_html/inc/StyleUtils.php on line 102


Podstawy Programowania

Instytut Informatyki Stosowanej, Politechnika Łódzka

Narzędzia użytkownika

Narzędzia witryny


Instalacja środowiska do rozwiązywania zadań programistycznych w systemie testów automatycznych Mrówka

Autor: Tomasz Jaworski, IIS (tjaworski@iis.p.lodz.pl)

Wersja dokumentu: 2. Poprawki: Artur Mokrosiński, Szymon Skura.

Informacje wstępne

Poniższy dokument opisuje instalację skonfigurowanego już środowiska programisty dla Studentów pierwszego roku Informatyki Politechniki Łódzkiej. Środowisko to posiada wszystkie niezbędne narzędzia potrzebne z punktu widzenia nauki programowania w języku C oraz spełnienia wymogów zaliczenia kursów:

  • Podstawy Programowania 1 (semestr 1)
  • Podstawy Programowania 2 (semestr 2)

Skonfigurowane narzędzia pozwolą skupić się Studentowi na najistotniejszych problemach, związanych z samym językiem oraz algorytmiką a pominąć różnice oraz problemy z mnogością implementacji języka C w różnych kompilatorach. Podstawą konfiguracji jest pełna zgodność środowiska pracy Studenta z systemem testów maszynowych Mrówka, w którym to każdy Student zobowiązany jest testować swoje programy.

Uwagi do dokumentu, znane różnice i problemy, etc…

Uwaga! Przygotowane środowisko to Debian 9.3.0 w wersji x86 (32 bity) podczas gdy Mrówka wykorzystuje Debiana 9.3.0 w wersji x64 (64 bity). Jest to jedyna różnica między rzeczywistym systemem testującym a środowiskiem roboczym. Należy o tym pamiętać, gdyż różnica ta wpływa na między innymi na długość wskaźnika, niektórych typów liczbowych oraz sposób umieszczania pól w strukturach.

Platforma sizeof(long int) sizeof(void*)
x86 (32 bity) 4 4
x64 (64 bity) 8 8
Wersja x64 w przygotowaniu

Instalacja środowiska VirtualBox

Wersję instalacyjną środowiska Oracle VirtualBox należy pobrać z oficjalnej strony, dostępnej pod adresem https://www.virtualbox.org/wiki/Downloads. Dostępna jest ona w sekcji VirtualBox X.Y.Z platform packages. W zależności od posiadanej platformy hosta (aktualnie zainstalowanego systemu) należy wybrać odpowiednią wersję programu. Dalsza cześć dokumentu zakłada system Windows jako system hostujący.

Po zakończeniu instalacji (głównie poprzez klikanie przycisku Next) należy uruchomić VirtualBox.

Opcja: Świeża instalacja Virtual Boxa

Po wykonaniu nowej instalacji należy doinstalować paczkę rozszerzeń Extension Pack. Rozszerzenia te pozwalają na istotne przyspieszenie systemu gościa (pracującego w symulowanej maszynie środowiska VirtualBox). Dostępna jest ona pod adresem https://www.virtualbox.org/wiki/Downloads, w sekcji VirtualBox X.Y.Z Oracle VM VirtualBox Extension Pack. Pobrany plik można uruchomić jak zwykły program, z poziomu Exploratora Windows lub bezpośrednio z programu Virtual Box, za pomocą polecenia FilePreferencesExtensions.

Należy kliknąć Install oraz zaakceptować warunki licencji.

Opcja: Aktualizacja istniejącej instalacji

Zostaniemy zapytani o możliwość aktualizacji paczki rozszerzeń Extension Pack. Należy się zgodzić, klikając Download.

Całą pracę z pobieraniem powinien wykonać sam program. Użytkownik musi jedynie kliknąć Download oraz Install.

Następnie instalator wyświetli wersję obu paczek rozszerzeń i poprosi o akceptację:

Należy kliknąć Upgrade oraz zaakceptować warunki licencji.

Pobranie oraz instalacja wirtualnej maszyny

Środowisko, w postaci zainstalowanego i skonfigurowanego systemu Debian 9.3, dostępne jest pod adresem http://pp.iis.p.lodz.pl/mrowkojad/Mrowka, Debian x86, CodeLite.ova. Plik ten należy pobrać. Plik ten waży ok. 2.5GB.

Wersja x64: http://pp.iis.p.lodz.pl/mrowkojad/Dante, Debian x64, CodeLite.ova.

Po zakończeniu pobrania plik należy zaimportować do VirtualBoxa, za pomocą polecenia FileImport Appliance.

Po wybraniu pliku, należy kliknąć Next. W następnym oknie możliwe jest ustawienie podstawowych parametrów wirtualnej maszyny, np. liczbę przydzielonych rdzeni macierzystego CPU czy wielkość pamięci.

Po pomyślnym imporcie pobranego pliku, w środowisku VirtualBox dostępna będzie nowa wirtualna maszyna.

Konfiguracja środowiska wirtualnej maszyny

Przed przystąpieniem do pracy należy skonfigurować maszynę, aby pasowała do posiadanego środowiska hosta.

Konfiguracja współdzielonego folderu

Uwaga! Trzymaj swoje dane/programy/materiały w katalogu współdzielonym. W przypadku aktualizacji maszyny wirtualnej cała jej zawartość jest likwidowana.

Pierwszym krokiem jest ustawienie współdzielonego folderu, widzianego zarówno przez maszynę hosta jak i maszynę gościa. W tym folderze będzie można trzymać pisane projekty, programy oraz wszystkie elementy, które powinny być dostępne w obu systemach operacyjnych.

Wybierz polecenie MachineSettings a następnie opcję Shared Folders.

Po dwukrotnym kliknięciu na wpis Documents należy ustawić wybraną ścieżkę. Domyślna wartość to C:\Users\Tomek\VirtualBox VMs, która nie istnieje na Twoim komputerze (chyba, że masz taką samą nazwę użytkownika). Dla przykładu, może to być np. D:\studia\programowanie_w_C. Zawartość tego katalogu będzie widoczna w systemie gościa, w katalogu /home/student/student. Zmianę należy zatwierdzić, klikając OK.

Konfiguracja głównego skrótu klawiatury

System operacyjny gościa można uruchomić w pełnym ekranie tak, aby całkowicie przesłaniał elementu pulpitu systemu hosta. W takim przypadku powrót do systemu hosta możliwy jest jedynie poprzez: * wyłączenie wirtualnej maszyny. * użycie skrótu klawiatury, przełączającego pełny ekran do okna.

Skrót ten można ustawić za pomocą polecenia FilePreferencesInput. Następnie należy wybrać zakładkę Virtual Machine.

W polu Host Key Combination należy wybrać klawisz modyfikatora, który będzie interpretowany przez przechwytywany przez maszynę wirtualną (nie będzie przekazywany do systemu gościa). Ja preferuję Scroll Lock (i takie jest domyślne ustawienie maszyny), jednak niektóre laptopy nie mają takiego klawisza. Należy wybrać taki klawisz, którego się praktycznie nie używa. Wprowadzone zmiany należy zatwierdzić, klikając OK.

Uruchomienie maszyny wirtualnej

Po wprowadzeniu wszystkich zmian można uruchomić wirtualną maszynę, klikając na ikonę Start. Następnie trzeba poczekać na start systemu operacyjnego gościa.

Po pomyślnym uruchomieniu powinniśmy zobaczyć poniższy widok - okno logowania Debiana.

Zainstalowany system posiada dwa konta:

  • Konto root - administratora, do prac naprawczych oraz administracyjnych. Pozwala na zrobienie absolutnie wszystkiego, łącznie z usunięciem systemu. Hasło do konta root to:
pp
  • Konto student - konto robocze, do pracy z językiem C. Posiada już skonfigurowane narzędzia. Zalecane do normalnej pracy. Hasło do konta student to:
student

Uruchomienie i przydatne skróty

Po zalogowaniu się do konta student możemy zacząć pracować w nowym systemie.

W ramach wirtualnej maszyny dostępne są preinstalowane oraz skonfigurowane:

  • środowisko CodeLite, do pisania i uruchamiania programów
  • kompilator GCC 6.3.0
  • tester Valgrind + Memcheck
  • debugger gdb
  • manager plików Midnight Commander

Do pisania kodu należy skorzystać ze środowiska CodeLite. Po jego uruchomieniu należy utworzyć nową przestrzeń roboczą (Workspace). Jest to odpowiednik np. Rozwiązania (Solution) ze środowiska Visual Studio. Jest to operacja, która należy wykonać jednokrotnie, po pierwszym uruchomieniu środowiska.

  1. W tym celu z menu wybieramy FileNewNew Workspace.
  2. W polu Workspace Name wpisujemy nazwę przestrzeni, w której będziemy pracować (pisać kod do zadań). Proponowana nazwa to zadania_pp2 (bez spacji i bez polskich znaków).
  3. Ścieżkę możemy zmienić, ale domyślna to /home/student/Documents. Ścieżka ta została wcześniej skonfigurowana tak, aby pliki te zapisywały się na naszym komputerze (głównym dysku twardym) a nie w maszynie wirtualnej. Dzięki temu maszynę zawsze można skasować, a kody źródłowe zostaną w wybranym wcześniej katalogu.
  4. Teraz możemy wyłączyć i włączyć CodeLite ponownie. Utworzona przez nasz przestrzeń robocza powinna zostać automatycznie wczytana. Można przystąpić do kodowania :)

Przygotowanie projektu; projekt a zadanie

Praktycznie wszystkie środowiska programistyczne nie pozwalają na kompilację pojedynczych plików - kompilują wyłącznie całe projekty. Oczywiście, w skład projektu może wchodzić jeden plik. Jednak projekt posiada również informacje o parametrach kompilatora, konsolidatora oraz platformy docelowej - informacje niezbędne do poprawnej kompilacji. W przypadku tej maszyny wirtualnej CodeLite został skonfigurowany tak, aby jak najlepiej odwzorowywać środowisko uruchomieniowe systemu HW. Szczególnie tyczy się to parametrów kompilatora/konsolidatora - te są identyczne.

Zatem, aby praca teraz i później przebiegała bez problemów należy przyjąć, że jedno zadanie = jeden projekt.

Aby utworzyć nowy projekt, wykonujemy:

  1. Wybieramy FileNewNew project.
  2. Z listy proponowanych szablonów wybieramy Mrówka a potem Projekt konsolowy w C (gcc) i klikamy Next.
  3. Podajmy nazwę projektu, np. zad_21_1. Bez polskich liter i spacji. i klikamy Next. Nowy projekt zostanie domyślnie utworzony w katalogu /home/student/Documents/zadania_pp2
  4. W oknie ustawienia toolchaina (zestawu narzędzi budujących) nie wprowadzamy zmian i klikamy Finish.

Po utworzeniu projektu możemy rozwinąć jego listę plików do takiej formy: Plik main.c jest naszym plikiem roboczym w ramach projektu (zadania) 21.1.

Uwaga! W przypadku wielu projektów CodeLite musi mieć wskazany aktywny projekt (ten, który będzie kompilowany i uruchamiany). Status ten przedstawiany jest przez środowisko jako pogrubienie i kursywa nazwy projektu: Aktywny projekt można zmienić, klikając dwukrotnie na innym.

Kompilacja i uruchomienie

Po utworzeniu przestrzeni roboczej, utworzeniu projektu oraz otworzeniu pliku main.c możemy przystąpić do pisania kodu. Poniżej przedstawiono domyślną zawartość pliku głównego.

Po napisaniu kodu można go uruchomić. Do tego celu służą poniższe przyciski w pasku narzędzi:

  • Pierwszy uruchamia program pod kontrolą systemu operacyjnego, a po zakończeniu działania pozostawia okno konsoli widoczne, do czasu ręcznego zamknięcia. Alternatywa - skrót klawiaturowy Ctrl+F5.
  • Drugi uruchamia program w trybie Debug. Tutaj należy korzystać z pułapek (menu DebuggerToggle breakpoint lub F9). Alternatywa - skrót klawiaturowy F5.

Możliwy problem: Komunikat Clock skew detected w oknie Build → patrz koniec dokumentu.

Od tej chwili można swobodnie pracować nad kodem - powodzenia! :-)

Możliwe problemy podczas uruchamiania i pracy

W tej sekcji będę umieszczał rozwiązania wszystkich problemów technicznych, na jakie napotkacie podczas pracy z maszyną wirtualną. Jeśli problem nie jest opisany a występuję - proszę się ze mną skontaktować (tjaworski@iis.p.lodz.pl).

Clock skew detected

Błąd wynika z konfiguracji katalogu /home/student/Documents. Pliki w nim zapisywane są z czasem modyfikacji systemu hostującego a nie systemu gościa. Ze względu na naturę symulacji Virtual Box, czas modyfikacji pliku może być „nieco w przyszłości”. Należy zmienić sposób informowania systemu gościa o czasie systemu hostującego. W tym celu należy :

  1. wyłączyć wirtualną maszynę,
  2. z głównego menu Virtual Box wybrać MachineSettings → zakładka System,
  3. odznaczyć pole Hardware Clock in UTC time,
  4. kliknąć OK i uruchomić ponownie maszynę.

Linux wiesza się chwilę starcie

Chwilę po starcie system Linux zatrzymuje się ze zbliżonym komunikatem:

Możliwe scenariusze:

  • Komputer ma wyłączoną wirtualizację w BIOSie. Zrestartuj swój komputer, włącz ją i uruchom ponownie uruchom Virtual Boxa. Ze względu na mnogość systemów BIOS, nie ma jednej ścieżki na włączenie/wyłączenie sprzętowej wirtualizacji. Szukaj opisów VT-x oraz AMD-V.
mater/vbox.txt · ostatnio zmienione: 23/05/2019 12:38 przez Tomasz Jaworski