przejście z systemu Windows do systemu Linux [zamknięte]

57

Muszę pogodzić te 2 fakty:

  1. Nie czuję się komfortowo pracując na Linuksie;
  2. Muszę opracować oprogramowanie dla systemu Linux.

Trochę tła: mam ponad 10-letnie doświadczenie w programowaniu w systemie Windows (prawie wyłącznie C / C ++, ale także niektóre .NET), byłem użytkownikiem FreeBSD w domu przez około 3 lata (potem musiałem wrócić do Windows) i nigdy nie miałem dużo szczęścia z Linuksem. A teraz muszę opracować oprogramowanie dla systemu Linux. Potrzebuję planu.

W systemie Windows możesz oderwać się od znajomości języka programowania, interfejsu API, na którym kodujesz, swojego IDE (VisualStudio) i kilku bardzo podstawowych narzędzi do rozwiązywania problemów (Depends, ProcessExplorer, DebugView, WinDbg). Wszystko inne przychodzi naturalnie.

W systemie Linux jest to zupełnie inna historia. Skąd, do diabła, miałbym wiedzieć, jakie biblioteki DLL (przepraszam, obiekt współdzielony) zostałyby załadowane, jeśli odsyłam do niego z wtyczki Firefox? Jaki jest odpowiednik wstawienia __asm ​​int 3 / DebugBreak () w źródle i uruchomienia programu, a następnie umożliwienia systemowi operacyjnemu wywołania debuggera? Dlaczego kompilacje wersji Hell korzystają z czegoś, o nazwie appLoader, podczas gdy kompilacje debugowania działają w jakiś inny sposób? Co najgorsze: jak udostępnić środowisko programistyczne dla systemu Linux?

Biorąc pod uwagę, że nienawiść zwykle wiąże się z niewystarczającą wiedzą, co byś polecił? Nie mam nic przeciwko Emacsowi i GCC. Muszę kształcić się jako administrator / użytkownik Linuksa i muszę nauczyć się odpowiednich narzędzi do rozwiązywania problemów (strace jest fajne, btw), odpowiedników tych wymienionych powyżej.

Czy muszę robić Linuksa od zera? Czy też muszę po prostu przeczytać kilka książek (przeczytałem „Środowisko programowania UNIX” Kernighana i „Advanced Programming ...” Stevensa, ale muszę nauczyć się czegoś bardziej praktycznego)? Czy też muszę mieć dystrybucję Linuksa na moim komputerze domowym?

rincewind
źródło
73
Tak samo jest z Windows
15
Zastanawiasz się nad znalezieniem innej pracy, w której czujesz się bardziej komfortowo?
3
Na Unices manjest twoim przyjacielem. Chciałbym man nmi man ldjako punkt wyjścia.
dietbuddha,
1
zacznij korzystać z systemu Windows;)
Jigar Joshi
1
„Wszystko inne przychodzi naturalnie”? Oczywiście, że przychodzi naturalnie, robisz to od 10 lat. Linux nie jest gorszy, jest inny . A teraz, kiedy masz 10 lat, twój mózg nie uczy się nowych rzeczy tak łatwo jak kiedyś, a wszystkie te rzeczy, które są inne, stają się czymś, czego musisz się oduczyć. Podejście do sprawy z „Linux sucks” sprawi, że twoje życie będzie nieszczęśliwe.
JesperE

Odpowiedzi:

62

Ciekawy może być artykuł Dynamiczne łączenie w Linuksie i Windowsie, który wyjaśnia, w jaki sposób każdy system operacyjny wykonuje dynamiczne łączenie. Artykuł Ścieżki przeszukiwania bibliotek współużytkowanych wyjaśnia, w jaki sposób znajdują się biblioteki. Także statyczne, współdzielone dynamiczne i ładowalne biblioteki Linux są bardzo dobre. Zaletą bibliotek Linuksa jest to, że mają lepszą obsługę wersjonowania i mają kilka wersji biblioteki niż Windows (AFAIK, nie robię Windowsa). Zobacz w tym celu Interfejs biblioteki w wersjach Solaris i Linux . Artykuły te powinny naprawdę zapewnić ci bibliotek.

GDB jest bardzo potężny, dobrym wprowadzeniem jest prawdopodobnie samouczek gdb RMS . Możesz przeczytać o warunkowych punktach przerwania. Aby __asm(int 3)zobaczyć odpowiedniki, zobacz pytanie Ustaw punkt przerwania w kodzie C lub C ++ programowo dla gdb w systemie Linux .

Książka Advanced Unix Programming autorstwa Marc Rochkind to obowiązkowa lektura, IMHO. Ma wiele przykładów i obejmuje wszystkie tematy POSIX / SUS w bardzo dobrze wyjaśniony sposób. To najlepsza książka na ten temat, jaką do tej pory przeczytałem.

Ale aby ułatwić Ci życie, polecam użycie interfejsu API wysokiego poziomu, który streszcza dla Ciebie różne rzeczy, takie jak Qt. Ułatwia także pisanie na wielu platformach.

Wykonanie Linuxa od zera pomaga zrozumieć, w jaki sposób składa się system Linux, ale myślę, że nie poprawia to znacznie twojej wiedzy na ten temat z punktu widzenia programistów. To sprawia, że ​​czujesz się bardziej komfortowo z Linuksem, ponieważ dowiadujesz się, jakie części są w środowisku Linux (a częściowo także dlaczego ). Linux nie będzie dla ciebie dużym blackboxem po pracy z Linuksem od podstaw.

DarkDust
źródło
Jasne, w systemie 32-bitowym to przerwanie włamie się do debuggera, jeśli proces jest już debugowany . To o to pytam. Windows pozwala na dołączenie debuggera po pułapce. W niektórych scenariuszach jest to niezwykle wygodne. I dzięki za linki!
rincewind
6
Świetna odpowiedź! Uwaga: w przypadku samouczka gdb RMS to „Ryan M. Schmidt”, a nie „Richard M. Stallman”. (ważna uwaga, ponieważ Stallman był oryginalnym autorem GDB)
entropo,
System Windows miał ładowanie bibliotek Side-by-Side ( msdn.microsoft.com/en-us/library/ms229072(v=vs.80).aspx ) obsługiwane przez około 12 lat. Więc raczej się mylisz w kwestii wersjonowania.
Claus Jørgensen
16

Jeśli chcesz strace, nie zapomnij ltrace: odpowiednik wywołań bibliotecznych.
Ponadto tak, polecam Linux From Scratch . Jest to dobre ćwiczenie w opracowywaniu podstawowych elementów systemu operacyjnego i ich zgodności.
Aby uzyskać nowoczesne, kompletne leczenie referencyjne programowania systemu, polecam wybranie interfejsu programowania systemu Linux .

entropo
źródło
12

Mac OS X jest jak Mercedes; jest najładniejszy i najczystszy, ale kosztuje dużo. Windows jest jak Toyota; doprowadzi cię tam iz powrotem.

Linux jest jak hot rod; Ludzie mogą się w to zagłębić, rozebrać i złożyć ponownie. Linux nie jest dla kogoś, kto chce po prostu korzystać z komputera; jest dla ludzi, którzy kochają komputery. Ludzie, którzy nie kochają komputerów, powinni trzymać się od nich z daleka.

Rzeczy, których nauczyłeś się w systemie Windows, nie będą dobrze tłumaczyć, nie. Ale widzisz elementy wewnętrzne i obserwujesz pracę silnika.

Postaraj się wziąć Linuksa jako nową zabawkę, z którą możesz się bawić i czołgać się, aby zobaczyć, co się dzieje. Rzeczy, które są łatwe w systemie Windows, są trudniejsze w systemie Linux; rzeczy, które są niemożliwe w systemie Windows, są możliwe w systemie Linux.

Jeśli kochasz komputery, możesz pokochać Linuksa; jeśli nie kochasz komputerów, dlaczego w ogóle programujesz?

Andy Canfield
źródło
13
+1 dla „ Rzeczy łatwe w systemie Windows są trudniejsze w systemie Linux; rzeczy niemożliwe w systemie Windows są możliwe w systemie Linux ”. Dodałbym: „ Podczas gdy Windows wpycha do ust wstępnie strawione jedzenie, w Linuksie masz możliwość gotowania, a nagrodą jest to, że możesz jeść to, co lubisz ”… Oczywiście, czy to jadalne, czy nie. zależy bardzo od tego, jak dobry jesteś szefem kuchni ...
Alain Pannetier,
14
@Andy: „Windows jest jak Toyota” . Toyota ma znacznie lepszą jakość niż Windows.
Przywróć Monikę
4
@ SK-logic, Dokładnie. Nie wdając się w kolejną wojnę religijną, weź pod uwagę następujące kwestie. Ze względów strategicznych i finansowych państwa członkowskie są skierowane do jak największej liczby odbiorców. Techniczne rzeczy, które użytkownicy komputerowi chcieliby kontrolować, są chowane poza zasięgiem wzroku, aby Jonesowie nie mieli problemów. Skończyło się to biurokracją wszędzie: DEP, GPO, „Zaufany instalator”, prywatne lub ukryte interfejsy API, „samonaprawiający się rozruch” itp. Geekowie nie naprawiają systemu Windows, po prostu rezygnują. Linux nie ma tego samego hegemonicznego celu; robią to użytkownicy dla użytkowników. To o to chodzi.
Alain Pannetier,
3
@ SK-logika - "jeśli masz źródła Windows" ... :-)
Rory Alsop
3
„Umiem nazwać kilka rzeczy, które są„ niemożliwe w systemie Windows ”i„ możliwe w systemie Linux ”- Znalazłem błąd w skrypcie systemu Linux i naprawiłem go. Znalazłem błędy w systemie Windows, ale nigdy nie byłem w stanie ich naprawić. Załóżmy, że ty mam obraz ISO (CD) w pliku dysku; Mogę zamontować go jako dysk w systemie Linux; czy możesz to zrobić w systemie Windows? I pamiętaj, że prawie wszystko w systemie Linux jest bezpłatne, a prawie wszystko w systemie Windows wymaga drogiej, zastrzeżonej aplikacji.
Andy Canfield
9

Co powiesz na rozwój w Mono w Monodevelop? Dzięki temu możesz zacząć od łatwego ponownego korzystania z platformy .NET.

Johann Blais
źródło
Próbowałem tego ostatnio - oczywiście pewne różnice w stosunku do Visual Studio, ale byłem gotowy do pracy wieczorem. To świetna ścieżka migracji.
JBRWilkinson
8

To jest zniechęcające, gdy patrzysz na to od samego początku (tak jak gdybyś był programistą Linuksa, którego zadaniem było tworzenie oprogramowania Windows). Poradziłbym sobie z tym jednym problemem naraz.

  • Najpierw uzyskaj konfigurację swojego środowiska (kompilator, IDE - tak, istnieją, Netbeans / Eclipse itp.)
  • Następnie zainstaluj api na wyższym poziomie (boost / Qt itp.)
  • Rozpocznij powoli, jeśli istnieje natychmiastowy problem do rozwiązania, skompiluj kod (lub zacznij pisać od zera itp.). Podobnie jak w przypadku każdego projektu programistycznego, zdobądź to, co wiesz, najpierw działa (tj. Rzeczy, które nie wymagają specyficznego systemu operacyjnego) interakcja), a następnie, gdy trafisz w kłopoty - wyszukaj, jestem pewien, że ktoś wcześniej napotkał ten sam problem i go rozwiązał.

Co najważniejsze, pozostaw wszystkie subiektywne opinie przed drzwiami. I nie, nie musisz być guru, aby rozwijać się w Linuksie, wiem wystarczająco dużo, aby się poruszać, i nie wszystko - ale czuję się dobrze z tym ...

Nim
źródło
1
+1 Nim: StackExchange ma tutaj niesamowitą ilość wcześniejszych informacji. Najbardziej lubię smaki Uniksa, ale obecnie pracuję w środowisku programistycznym Windows, a wyszukiwanie SE odpowiada na prawie wszystkie moje zapytania w bardzo krótkim czasie.
Rory Alsop,
6

The success or failure of many thing in life comes down to our attitude, looking for positives and keeping your mind focused on the positives will do more to adide you as you start down this new interesting adventure.

Jak długo zajęło Ci opanowanie pracy w środowisku Windows. Możesz powiedzieć, że to proste, dopiero co zacząłeś. Ale wcześniej miałeś kilka lat pracy z oknami. Jak długo korzystałeś z systemu Windows, zanim napisałeś swój program pięści. To było dla mnie 8 lat, chociaż używam Linuksa prawie wyłącznie od 5 lat. Jestem teraz bardziej biegły w Linuksie niż w Windowsie. Powinieneś dać sobie przynajmniej tyle czasu na zapoznanie się z nowym systemem.

Zacznij od listy aplikacji, z którymi nie możesz żyć bez okien i poszukaj alternatyw w świecie * nix. http://alternativeto.net/ i dalsze sekcje Wikipedii mogą być pomocne tutaj.

Oto lista alternatywnego oprogramowania, które może okazać się bardzo przydatne. Oto kilka alternatyw dla rzeczy, o których wspomniałeś.

Inne przydatne zasoby do przenoszenia z jednego systemu do drugiego

O tym, jak zostać lepszym użytkownikiem zaawansowanym lub administratorem, zapoznaj się z tymi zasobami

Wygląda na to, że minęło trochę czasu, odkąd spojrzałeś na świat * nix. Poleciłbym niektóre nowe wydania dystrybucji z Fedory , Suse , Debiana lub mojej preferowanej stacji roboczej Ubuntu .

Prawdopodobnie możesz teraz uciec, nie znając wewnętrznych elementów systemu i tylko podstaw, takich jak w systemie Windows. Nie chciałbym po prostu uciec od minimum. Jeśli widzisz Linuksa jako narzędzie, które faktycznie pomaga ci w rozwoju, a nie tylko system operacyjny, w którym się rozwijasz, byłoby pomocne.

Linux From Scratch będzie znacznie ważniejszy, jeśli programujesz dla Linuksa, jest to bardzo specyficzny i techniczny sens. IE, który chcesz opracować dla jądra lub port, na którym programujesz, na super komputer z systemem Linux. Byłoby to jednak bardzo przydatne. Myślę, że prawdopodobnie mógłbyś to zostawić na kilka miesięcy, podczas gdy po prostu próbujesz zacząć korzystać z Ubuntu. Ubuntu będzie tak blisko rzeczy, które działają w świecie Mac i Windows.

nelaaro
źródło
1
Debian nie jest nową dystrybucją. :-P To wciąż dobry wybór.
Steve S,
SuSE i Fedora też nie są… SuSE ma teraz 15 lat, Fedora jest rzeczywiście jedną z „młodszych” dystrybucji, które mają 8 lat. Nadal +1.
DarkDust,
1
@Darkdust @ Steve-s nowy jak w najnowszych wydaniach,
nelaaro
6

Myślę, że odpowiedziałeś na pytanie w pytaniu:

„W systemie Windows możesz oderwać się od znajomości języka programowania, interfejsu API, na którym kodujesz, swojego IDE (VisualStudio) i kilku bardzo podstawowych narzędzi do rozwiązywania problemów (Depends, ProcessExplorer, DebugView, WinDbg). Wszystko inne przychodzi naturalnie. „

Zgaduje, co w Linuksie można uniknąć, znając język programowania, interfejs API (lub kilka), swoje IDE (Eclipse lub NetBeans, nawet Geany, Emacs lub vim, jeśli chcesz) oraz kilka podstawowych narzędzi do rozwiązywania problemów ( gdb, narzędzia do śledzenia, kłaczki, htop, ps).

Masz dużo wiedzy zainwestowanej w ekosystem programowania Windows. Znaczna część tego (mam nadzieję) abstrakcyjnej wiedzy (co to jest kompilator, debugger, wspólna biblioteka, proces, wątek? Co robią?), Która łatwo będzie tłumaczyć, gdy nauczysz się różnych narzędzi. Niektóre są specyficzne dla domeny (z jaką biblioteką DLL jest połączone, gdy dodam X do projektu?), Ale nawet przejście z jednej klasy języka do drugiej w systemie Windows wymagałoby nowej nauki.

Zainstaluj Ubuntu lub Fedorę na maszynie wirtualnej, przeczytaj niektóre samouczki C ++ Hello World w Eclipse lub NetBeans oraz niektóre debugowania w samouczkach Eclipse / NetBeans i pozwól naturalnej zdolności twojego mózgu do przejęcia kontroli. Przetłumaczy pomysły, jeśli się zrelaksujesz i po prostu uruchomisz.

Justin
źródło
3

Nauczyłem się Uniksa ogólnie, czytając strony podręcznika. Powinieneś przynajmniej je przejrzeć. Tak, mam na myśli ich wszystkich. Metodę, której używam, jest cd do katalogów stron podręcznika i atakowanie ich pojedynczo.

Używam tego:

for i in *; do f=`basename $i .gz`; man `basename $f .1` ; done

... zastępując .1 numerem sekcji, którą czytasz, .2, .3 itd. Naciśnij ctrl-Z ctrl-C, aby wyjść z pętli. Twój przebieg może się różnić, jeśli twoja dystrybucja linuksa przechowuje rzeczy inaczej, tzn. Nie jako cmdname.1.gz.

Wystarczy przejrzeć opisy i więcej, jeśli jest to coś interesującego. Sekcje 1, 2 i 3 są najważniejsze dla programisty. 1 obejmuje ogólne polecenia użytkownika, które obejmują narzędzia kompilacyjne i różne narzędzia kryminalistyczne. 2 to wywołania systemowe, a 3 to wywołania biblioteczne.

Brzeszczot
źródło
2
Proponuję odpalić xmanjako bardziej „przyjazny” interfejs. Wybierz sekcję, kliknij stronę podręcznika, przeczytaj ją. Spłucz, powtórz.
ΤΖΩΤΖΙΟΥ
Zapomniałem o takich rzeczach. Stan dokumentacji w wolnej przestrzeni systemu operacyjnego jest mniej niż idealny, a stwierdziłem, że narzędzia często ją pogarszały, więc przestałem z nich korzystać. Mogę tylko założyć, że trochę się poprawiło?
Hack Saw
3

Nie zmuszaj się do robienia czegoś, czego nie lubisz. Użyj systemu Windows jako środowiska programistycznego, napisz przenośny kod, skompiluj go krzyżowo dla systemu Linux i testuj go tylko od czasu do czasu na maszynie wirtualnej.

Logika SK
źródło
2

Nie jestem pewien, czy to działa na platformach, ale na języki programowania, uznałem, że warto pomyśleć o tym, jak zapoznałem się z tymi, w których jestem dobry, i spróbować odtworzyć te doświadczenia i działania dla tego, co „ próbuję się uczyć.

Może coś na tych liniach?

Generalnie rzecz biorąc, moje zainteresowanie i zaufanie do GNU / Linuksa wynika z tego, że jestem o wiele bardziej podatny (i wymagał majsterkowania we wczesnych dniach) niż Windows. Musiałem zadzierać z wieloma rzeczami, aby wszystko działało, a to pomogło mi się wiele nauczyć. Teraz jest znacznie lepiej, ale wszystkie te godziny pomogły.

Noufal Ibrahim
źródło
2

Byłem jednym z dwóch, którym powierzono coś podobnego, ale innego. Pracuję w okręgu szkolnym K-12, a system biznesowy (HR, finanse itp.) Migruje z bazy danych HP3000 / TurboImage na platformę Linux / MS SQL. Czuję się dobrze ze stroną MS SQL. Ale nie po stronie Linuksa. Oboje jesteśmy po stronie administratora, a nie po stronie programowania. Programowanie odbywa się na zewnątrz - zewnętrzna aplikacja biznesowa dla organizacji K-12.

Wziąłem 5 weekendowe wprowadzenie do Linuksa (Redhat) w weekendy - odbywało się to głównie w trybie wiersza poleceń - i było to dla mnie warte czasu, jako szybki start w Linuksie. Oczywiście YMMV w zależności od klasy / nauczyciela.

Wspomniałeś „Najgorsze: jak udostępnić środowisko programistyczne dla systemu Linux?”? Ponieważ znasz już system Windows, zdecydowanie sugeruję, abyś otrzymał kopię vmWare Workstation. Dzięki temu możesz zachować Windows jako stację roboczą i zainstalować Linuksa jako systemy gościa - usuwaj, płucz i powtarzaj w razie potrzeby. Gdy uzyskasz dobrą konfigurację, uważam, że możesz ją wykonać, ale nie mogę powiedzieć na pewno, które wersje są w stanie wykonać migawkę. A jeśli wybierzesz ścieżkę vmWare Workstation, aby umożliwić wiele konfiguracji programistycznych - zdecydowanie zwiększ pamięć.

Nie mam również nic przeciwko poleceniu gościom CentOS jako systemu operacyjnego Linux. Z tego, co rozumiem, to jak RedHat bez brandingu i / lub sprzedaży i / lub kosztów wsparcia. Nie jestem zaznajomiony z innymi wersjami Linuksa, więc nie mogę dać wkładu w te.

Greg

Gregory Thomson
źródło
1

Lubię obie platformy i ze względu na wszystkie różnice w interfejsie użytkownika i ekosystemie deweloperów uważam, że są bardziej podobne niż inne pod przykryciem. W rzeczywistości dla większości koncepcji systemu Windows można znaleźć równoważne koncepcje systemu Linux, przeszukując Internet.

Powiedziawszy to, zdecydowanie sugeruję nauczenie się, jak robić rzeczy w „uniksowy sposób”. Użyj raczej linii poleceń niż błędnego interfejsu GUI (mówię tu głównie o gdb); nie szukaj IDE i naucz się zamiast tego korzystać z zestawu specjalistycznych narzędzi. Wybierz dobrego edytora (wskazując na vima) i naucz się go dobrze. Przeczytaj, jak to makedziała, nawet jeśli nie planujesz zostać ekspertem. Może nawet polubisz Linuksa. Jest przyjazny dla maniaków i zapewnia dobrą zabawę.

Nemanja Trifunovic
źródło
1

Zastanów się: kiedyś nie wiedziałeś nic o Windowsie, ale nauczyłeś się go i z czasem poczułeś się komfortowo.

Następnie MS zmieniło dowolny system programowania, w którym czujesz się komfortowo, na .NET i nie wiedziałeś już nic o DLLS, COM i czymkolwiek, musisz nauczyć się takich rzeczy jak zestawy, GAC, domeny aplikacji. Nauczyłeś się tych ok.

Dlaczego więc martwisz się, że możesz zrobić to samo z Linuksem?

W sieci jest mnóstwo samouczków „na początek” dla wszystkich środowisk programistycznych. Teraz mówisz GCC, więc zamierzam założyć programowanie w C ++. Zdobądź Eclipse, zainstaluj CDT (narzędzia programistyczne) na swojej platformie Eclipse (Eclipse to uniwersalne IDE, możesz go używać do C ++, PHP, Java, cokolwiek - ale musisz zainstalować narzędzia dla swojego języka ponieważ tak naprawdę nie chciałbyś, aby wszystko było wstępnie zainstalowane jak VS i zajmuje 3 dni do instalacji :))

W Internecie dostępne są łatwe w obsłudze samouczki. IBM ma tutaj jeden, który jest dość kompleksowy.

Narzędzia do debugowania ... Eclipse ma to wbudowane ( samouczek ), ale możesz znaleźć wiele narzędzi takich jak te, o których wspomniałeś, po prostu przeszukuj Internet, a znajdziesz wiele opcji. Zajmie ci to trochę czasu, aby dowiedzieć się, jak odczytać zrzut podstawowy (na przykład w przeciwieństwie do zrzutu użytkownika Windows), ale dostaniesz się tam.

Warto również założyć blog z własnymi doświadczeniami, nie tylko pozwoli ci przypomnieć sobie o tym, co zrobiłeś (np. Skonfiguruj zaćmienie, jak ci się podoba, zapomnisz, kiedy będziesz musiał to zrobić ponownie w rok), ale pomoże to innym w twojej sytuacji.

gbjbaanb
źródło
0

Nie sądzę, że musisz robić Linuksa od zera. Gdybym był tobą, wybrałbym Ubuntu. Jest wygodniejszy i oparty na Debianie dostępnych jest wiele materiałów technicznych.

Jeśli chcesz zagłębić się w Linuksa, Gentoo to dobra opcja. Wymaga to sporo przeczytania o konfiguracji i jądrach, ale daje również całkiem funkcjonalny system do pracy w systemie af

anders.norgaard
źródło
0

Google „Sztuka programowania w Uniksie” i przeczytaj ją. IMO, twoją główną trudnością jest inna filozofia, a ta książka jest do tego znakomita.

Przedstawia także niektóre nieoczywiste, ale technicznie bardzo ważne różnice między systemami * n * x i Windows - są to kluczowe czynniki pozwalające zrozumieć, dlaczego wykonywanie innych czynności ma sens w systemie Linux.

użytkownik59625
źródło
1
... a także przedstawia wiele narzędzi i technik do użycia w systemie Linux.
0

Pierwsze pytanie, które zadam, brzmi: co chcesz rozwinąć? Jeśli jest to aplikacja oparta na gui, może to różnić się od konieczności napisania czegoś w rodzaju rozszerzenia jądra.

W przypadku aplikacji GUI uważam, że najłatwiejszą metodą jest użycie Qt, który ma własne środowisko programistyczne (Qt-Creator) i będąc wieloplatformowym, pozwala nauczyć się tylko jednego API, którego można używać w systemie Windows / Linux / OSX, a nawet tworzenie aplikacji mobilnych. Podobnie jak Visual Studio w systemie Windows lub XCode w OSX, możesz tworzyć i układać okna i elementy z edytora graficznego, a interfejs API jest bardzo łatwy do pobrania z mnóstwem przykładowych aplikacji.

Jeśli potrzebujesz uzyskać więcej niższego poziomu, to kiedy już poznasz sposób poruszania się po Linuksie w linii poleceń, umiesz przeglądać katalogi, manipulować plikami, rozumieć uprawnienia itp., Albo zacznij czytać, jak skompilować prosty program z gcc, jak połączyć pliki i uruchomić plik wykonywalny, a następnie jak debugować za pomocą gdb.

Alternatywnie, jeśli wydaje się to trochę zniechęcające, możesz pobrać Eclipse lub inne IDE, ale prawdopodobnie na dłuższą metę poczujesz się bardziej komfortowo z Linuksem, jeśli najpierw umieścisz czas i wysiłek w wierszu poleceń.

Mroczny rycerz
źródło