{"id":1225,"date":"2020-05-09T23:51:00","date_gmt":"2020-05-09T21:51:00","guid":{"rendered":"http:\/\/www.daniel.slask.pl\/?p=1225"},"modified":"2020-10-02T22:32:39","modified_gmt":"2020-10-02T20:32:39","slug":"cross-compilation-programowanie-rpi-na-windows","status":"publish","type":"post","link":"https:\/\/daniel.slask.pl\/m\/cross-compilation-programowanie-rpi-na-windows\/","title":{"rendered":"Cross-compilation. Programowanie RPI na Windows."},"content":{"rendered":"\n<p>Ka\u017cdy pewnie, zaczynaj\u0105c zabaw\u0119 z raspbbery pi, zastanawia\u0142\nsi\u0119, w jaki spos\u00f3b pisa\u0107 programy na te urz\u0105dzenie. Czy w systemie co dostarcza\nraspberyy, a mo\u017ce na komputerze stacjonarnym i p\u00f3\u017aniej taki kod przenosi\u0107 na\nmalink\u0119. Tutaj dobrym rozwi\u0105zanie okazuje si\u0119 Cross-compilation. Polega ona, na\ntym (w skr\u00f3cie), \u017ce piszemy program na innym urz\u0105dzeniu &#8211; w tym przypadku na\nkomputerze stacjonarnym, laptopie &#8211; a kompilujemy na urz\u0105dzeniu docelowym,\nczyli raspberry pi. <\/p>\n\n\n\n<p>Dobra, to ju\u017c wiemy w jaki spos\u00f3b i gdzie b\u0119dziemy pisa\u0107\nprogram. Ale jakie narz\u0119dzie do tego wykorzysta\u0107. Przeszuka\u0142em prawie wszystkie\nczelu\u015bci internetu w poszukiwaniu jak najlepszego rozwi\u0105zania. Z\nprzyzwyczajenia do Eclipse i do Visual Studio, uporczywie szuka\u0142em bezp\u0142atnych\nrozwi\u0105za\u0144 croos-kompilacji. Jedynie co znalaz\u0142em to p\u0142atne rozwi\u0105zania, a to mi\nnie pasowa\u0142o wi\u0119c szuka\u0142em dalej (ale i tak wykorzystam te rozwi\u0105zanie, bo\nwygl\u0105da na ciekawe &#8211; jest to VisualGDB https:\/\/visualgdb.com\/tutorials\/raspberry\/crosscompiler\/\n). Okaza\u0142o si\u0119, \u017ce IDE znajduj\u0105ce si\u0119 na malince umo\u017cliwia taki rodzaj\nprogramowania. Nazywa si\u0119 Netbeans i dzia\u0142a w Javie. Jednak w najnowszej wersji\nnie jest zaimplementowana obs\u0142uga j\u0119zyka C\/C++, ale programi\u015bci tego produktu\numo\u017cliwili pobranie dodatku z poprzedniej wersji &#8211; a dok\u0142adnie z 8.2 <\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter columns-3 wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"561\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_1.png\" alt=\"\" data-id=\"1228\" class=\"wp-image-1228\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_1.png 900w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_1-300x187.png 300w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_1-768x479.png 768w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_1-400x249.png 400w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2a-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"561\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2a-1.png\" alt=\"\" data-id=\"1235\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1235\" class=\"wp-image-1235\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2a-1.png 900w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2a-1-300x187.png 300w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2a-1-768x479.png 768w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2a-1-400x249.png 400w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2b-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"546\" height=\"488\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2b-1.png\" alt=\"\" data-id=\"1236\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2b-1.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1236\" class=\"wp-image-1236\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2b-1.png 546w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2b-1-300x268.png 300w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_2b-1-400x358.png 400w\" sizes=\"(max-width: 546px) 100vw, 546px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Aby doda\u0107 plugin obs\u0142uguj\u0105cy C\/C++,&nbsp; nale\u017cy po pobraniu najnowszej wersji netbeans\nhttps:\/\/netbeans.apache.org\/download\/index.html przej\u015b\u0107 do Tools-&gt;Plugins.\nNast\u0119pnie w zak\u0142adce Settings zaznaczy\u0107 miejsce wyszukiwania plugin\u00f3w &#8211;\nNetbeans 8.2 Plugin Portal i nacisn\u0105\u0107 ADD.<\/p>\n\n\n\n<p>Po przej\u015bciu do zak\u0142adki Available Plugins, w dost\u0119pnej\nli\u015bcie szukamy wtyczki w kt\u00f3rej nazwie jest C\/C++, zaznaczamy j\u0105 i naciskamy\ninstall. Po przeprowadzonej instalacji, uruchommy dla pewno\u015bci ponownie\nprogram.<\/p>\n\n\n\n<p>Dzi\u0119ki instalacji tej wtyczki, NetBeans umo\u017cliwia teraz\npisanie program\u00f3w w C\/C++. Aby mo\u017cliwe by\u0142o wykorzystanie cross-compilation,\nnale\u017cy jeszcze ustawi\u0107 par\u0119 rzeczy. W pierwszej kolejno\u015bci otwieramy ustawienia\npoprzez przej\u015bcie do tools-&gt;options-&gt;C\/C++<\/p>\n\n\n\n<p>W zak\u0142adce BuildTools wybieramy Edit, a nast\u0119pnie ADD (w\nmoim przypadku ju\u017c znajduje si\u0119 adres mojej malinki).<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-2 wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_3-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"766\" height=\"673\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_3-1.png\" alt=\"\" data-id=\"1238\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_3-1.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1238\" class=\"wp-image-1238\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_3-1.png 766w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_3-1-300x264.png 300w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_3-1-400x351.png 400w\" sizes=\"(max-width: 766px) 100vw, 766px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"371\" height=\"311\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_4.png\" alt=\"\" data-id=\"1239\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_4.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1239\" class=\"wp-image-1239\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_4.png 371w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_4-300x251.png 300w\" sizes=\"(max-width: 371px) 100vw, 371px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>W nowym oknie konfiguracyjnym zdalny host, w polu hostname\nwpisujemy adres malinki, b\u0105d\u017a wybieramy z listy. Wciskamy przycisk next<\/p>\n\n\n\n<p>W nast\u0119pnym oknie wpisujemy identyfikator, czyli login do\nnaszej malinki (domy\u015blnie pi) i wybieramy rodzaj autoryzacji (albo poprzez\nhas\u0142o, albo poprzez klucz). Po wci\u015bni\u0119ciu next zostaniemy poproszenie o podanie\nhas\u0142a &#8211; password. Warto te\u017c zaznaczy\u0107 aby program pami\u0119ta\u0142 nasze has\u0142o\n(remember password).<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-3 wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"688\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_5.png\" alt=\"\" data-id=\"1240\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1240\" class=\"wp-image-1240\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_5.png 771w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_5-300x268.png 300w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_5-768x685.png 768w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_5-400x357.png 400w\" sizes=\"(max-width: 771px) 100vw, 771px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"353\" height=\"218\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_6.png\" alt=\"\" data-id=\"1241\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1241\" class=\"wp-image-1241\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_6.png 353w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_6-300x185.png 300w\" sizes=\"(max-width: 353px) 100vw, 353px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"766\" height=\"673\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_7.png\" alt=\"\" data-id=\"1242\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_7.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1242\" class=\"wp-image-1242\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_7.png 766w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_7-300x264.png 300w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_7-400x351.png 400w\" sizes=\"(max-width: 766px) 100vw, 766px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Po potwierdzeniu has\u0142a zamknie nam si\u0119 okienko konfiguracji\nzdalnego dost\u0119pu. Oczom naszym poka\u017ce si\u0119 skonfigurowana zak\u0142ada C\/C++.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_8.png\" alt=\"\" class=\"wp-image-1237\" width=\"213\" height=\"115\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_8.png 1920w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_8-300x163.png 300w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_8-768x416.png 768w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_8-1536x832.png 1536w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_8-956x518.png 956w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/03\/croos_8-400x217.png 400w\" sizes=\"(max-width: 213px) 100vw, 213px\" \/><\/figure><\/div>\n\n\n\n<p>Aby uzyska\u0107 po\u0142\u0105czenie z naszym hostem &#8211; malink\u0105 &#8211; wciskamy\nczerwony ekran opisany jako Connection status obok adresu rpi. Aby utworzy\u0107\nnowy projekt kt\u00f3ry b\u0119dzie zapisany na komputerze wybieramy File-&gt;New\nproject. Natomiast je\u017celi chcemy aby ca\u0142y projekt by\u0142 zapisywany na rpi na\npasku narz\u0119dzi wybieramy Create remote c\/c++ project znajduj\u0105cy si\u0119 obok adresu\nip naszej malinki. Drugi spos\u00f3b spowoduje zapisanie wszystkich plik\u00f31) zwi\u0105zanych z projektem na\nmalince, dzi\u0119ki czemu b\u0119dziemy mie\u0107 mo\u017cliwo\u015b\u0107 otworzy\u0107 projekt na ka\u017cdym\nkomputerze kt\u00f3ry ma dost\u0119p do malinki (oczywi\u015bcie musi posiada\u0107 program\nnetbeans, oraz mie\u0107 odpowiednie go skonfigurowany).<\/p>\n\n\n\n<p>Z tego co wyczyta\u0142em w interneci, w jednej z nowszych\nwersji, ma ju\u017c by\u0107 dost\u0119pna obs\u0142ug C\/C++, wi\u0119c czekamy z niecierpliwo\u015bci\u0105.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ka\u017cdy pewnie, zaczynaj\u0105c zabaw\u0119 z raspbbery pi, zastanawia\u0142 si\u0119, w jaki spos\u00f3b pisa\u0107 programy na te urz\u0105dzenie. Czy w systemie co dostarcza raspberyy, a mo\u017ce na komputerze stacjonarnym i p\u00f3\u017aniej taki kod przenosi\u0107 na malink\u0119. Tutaj dobrym rozwi\u0105zanie okazuje si\u0119&#8230;<br \/><a class=\"read-more-button\" href=\"https:\/\/daniel.slask.pl\/m\/cross-compilation-programowanie-rpi-na-windows\/\">Wi\u0119cej<\/a><\/p>\n","protected":false},"author":1,"featured_media":1348,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[125,42,8,178],"tags":[33,201,202,191,164],"views":416,"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/05\/RPI_and_C.png","jetpack_shortlink":"https:\/\/wp.me\/pcPgV3-jL","_links":{"self":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1225"}],"collection":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/comments?post=1225"}],"version-history":[{"count":7,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1225\/revisions"}],"predecessor-version":[{"id":1559,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1225\/revisions\/1559"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/media\/1348"}],"wp:attachment":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/media?parent=1225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/categories?post=1225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/tags?post=1225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}