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



Warning: Undefined array key -1 in /home/pp/.public_html/inc/html.php on line 1458

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronach Poprzednia wersja
Nowa wersja
Poprzednia wersja
mater:vbox [11/03/2018 19:04]
Tomasz Jaworski [Opcja: Świeża instalacja Virtual Boxa]
mater:vbox [23/05/2019 12:38] (aktualna)
Tomasz Jaworski [Pobranie oraz instalacja wirtualnej maszyny]
Linia 13: Linia 13:
   * Podstawy Programowania 1 (semestr 1)   * Podstawy Programowania 1 (semestr 1)
   * Podstawy Programowania 2 (semestr 2)   * Podstawy Programowania 2 (semestr 2)
-  * Algorytmy i Struktury Danych (semestr 2)+<html><!--  * Algorytmy i Struktury Danych (semestr 2) --> </html>
  
 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. 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.
Linia 44: Linia 44:
 Zostaniemy zapytani o możliwość aktualizacji paczki rozszerzeń //Extension Pack//. Należy się zgodzić, klikając //Download//. Zostaniemy zapytani o możliwość aktualizacji paczki rozszerzeń //Extension Pack//. Należy się zgodzić, klikając //Download//.
  
-{{:first_start.png}}+{{ :vbox_inst:first_start.png }}
  
 Całą pracę z pobieraniem powinien wykonać sam program. Użytkownik musi jedynie kliknąć //Download// oraz //Install//. Całą pracę z pobieraniem powinien wykonać sam program. Użytkownik musi jedynie kliknąć //Download// oraz //Install//.
Linia 50: Linia 50:
 Następnie instalator wyświetli wersję obu paczek rozszerzeń i poprosi o akceptację: Następnie instalator wyświetli wersję obu paczek rozszerzeń i poprosi o akceptację:
  
-{{:ep_upgrade.png}}+{{ :vbox_inst:ep_upgrade.png }}
  
 Należy kliknąć //Upgrade// oraz zaakceptować warunki licencji. Należy kliknąć //Upgrade// oraz zaakceptować warunki licencji.
Linia 56: Linia 56:
 ===== Pobranie oraz instalacja wirtualnej maszyny ===== ===== 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,%20Debian%20x86,%20CodeLite.ova. Plik ten należy pobrać. Plik ten waży ok. **2.5GB**.+Środowisko, w postaci zainstalowanego i skonfigurowanego systemu Debian 9.3, dostępne jest pod adresem [[http://pp.iis.p.lodz.pl/mrowkojad/Mrowka, Debian x86CodeLite.ova|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|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 **File** -> **Import Appliance**. Po zakończeniu pobrania plik należy zaimportować do VirtualBoxa, za pomocą polecenia **File** -> **Import Appliance**.
  
-{{:import_appl.png}}+{{ :vbox_inst:import_appl.png }}
  
 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 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.
  
-{{:import_setup.png}}+{{ :vbox_inst:import_setup.png }}
  
 Po pomyślnym imporcie pobranego pliku, w środowisku VirtualBox dostępna będzie nowa wirtualna maszyna. Po pomyślnym imporcie pobranego pliku, w środowisku VirtualBox dostępna będzie nowa wirtualna maszyna.
  
-{{:import_ok.png}}+{{ :vbox_inst:import_ok.png }}
  
  
Linia 83: Linia 86:
 Wybierz polecenie **Machine** -> **Settings** a następnie opcję **Shared Folders**. Wybierz polecenie **Machine** -> **Settings** a następnie opcję **Shared Folders**.
  
-{{:shared_folders.png}}+{{ :vbox_inst:shared_folders.png }}
  
-Po dwukrotnym kliknięciu na wpis //Documents// należy ustawić wybraną ścieżkę. Domyślna wartość to **C: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:_w_C**. Zawartość tego katalogu będzie widoczna w systemie gościa, w katalogu **/home/student/student**. Zmianę należy zatwierdzić, klikając **OK%%**%%.+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 ==== ==== Konfiguracja głównego skrótu klawiatury ====
Linia 93: Linia 96:
 Skrót ten można ustawić za pomocą polecenia **File** -> **Preferences** -> **Input**. Następnie należy wybrać zakładkę **Virtual Machine**. Skrót ten można ustawić za pomocą polecenia **File** -> **Preferences** -> **Input**. Następnie należy wybrać zakładkę **Virtual Machine**.
  
-{{:shortcut.png}}+{{ :vbox_inst:shortcut.png }}
  
 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**. 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**.
Linia 103: Linia 106:
 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 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 logownia Debiana.+Po pomyślnym uruchomieniu powinniśmy zobaczyć poniższy widok - okno logowania Debiana.
  
-{{:first_login.png}}+{{ :vbox_inst:first_login.png }}
  
-Zainstalowany system posiada dwa konta: * Konto **root** - administratora, do prac naprawczych oraz administracyjnych. Pozwala na zrobienie absolutnie wszystkiego, łącznie z usunięciem systemu.+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:
  
-Hasło do konta: **pp**+<code>pp</code>
  
-  * Konto **student** - konto robocze, do pracy z językiem C. Posiada już skonfigurowane narzędzia. **Zalecane do normalnej pracy**.+  * 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:
  
-Hasło do konta: **student**+<code>student</code>
  
 ===== Uruchomienie i przydatne skróty ===== ===== Uruchomienie i przydatne skróty =====
Linia 119: Linia 123:
 Po zalogowaniu się do konta **student** możemy zacząć pracować w nowym systemie. Po zalogowaniu się do konta **student** możemy zacząć pracować w nowym systemie.
  
-{{:debian_desktop.png}}+{{ :vbox_inst:debian_desktop.png }} 
 + 
 +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. 
 +  - W tym celu z menu wybieramy **File** -> **New** -> **New Workspace**. 
 +  - 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). 
 +  - Ś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. 
 +  - 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: 
 +  - Wybieramy **File** -> **New** -> **New project**. 
 +  - Z listy proponowanych szablonów wybieramy **Mrówka** a potem **Projekt konsolowy w C (gcc)** i klikamy **Next**. 
 +  - Podajmy nazwę projektu, np. **zad_21_1**. <color #ed1c24>Bez polskich liter i spacji</color>. i klikamy **Next**. Nowy projekt zostanie domyślnie utworzony w katalogu ///home/student/Documents/zadania_pp2// 
 +  - 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: 
 +{{ :vbox_inst:cl_workspace.png?direct&200 |}} 
 +Plik **main.c** jest naszym plikiem roboczym w ramach projektu (zadania) 21.1. 
 + 
 +<color #ed1c24>**Uwaga!**</color> 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: 
 +{{ :vbox_inst:cl_active_proj.png?direct&200 |}} 
 +**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. 
 +{{ :vbox_inst:cl_main.png?direct&800 |}} 
 + 
 +Po napisaniu kodu można go uruchomić. Do tego celu służą poniższe przyciski w pasku narzędzi: 
 +{{ :vbox_inst:cl_run_normal_debug.png?direct |}} 
 +  * 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 **Debugger** -> **Toggle 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ć ([[mailto:tjaworski@iis.p.lodz.pl|tjaworski@iis.p.lodz.pl]]). 
 + 
 +==== Clock skew detected ====
  
-W ramach wirtualnej maszyny dostępne jest przeinstalowane oraz skonfigurowane środowisko CodeLite.+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 : 
 +  - wyłączyć wirtualną maszynę, 
 +  - z głównego menu Virtual Box wybrać **Machine** -> **Settings** -> zakładka **System**, 
 +  - odznaczyć pole **Hardware Clock in UTC time**, 
 +  - kliknąć **OK** i uruchomić ponownie maszynę.
  
-bla bla bla......................+==== Linux wiesza się chwilę starcie ==== 
 +Chwilę po starcie system Linux zatrzymuje się ze zbliżonym komunikatem: 
 +{{ :vbox_inst:kernel_boot_panic.png?direct&400 |}}
  
 +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.1520791461.txt.gz · ostatnio zmienione: 11/03/2018 19:04 przez Tomasz Jaworski