2010-03-24 9 views
7

Moim ostatnim celem jest napisanie programu, który może działać na systemie Unix OS. Wiem, że istnieje wiele wersji Uniksa i nie wiem na razie dokładnie, który z nich muszę obsługiwać. Nie mogę teraz zainstalować żadnego systemu Unix. Jedyne, co mogę zrobić, to użyć darmowego systemu operacyjnego, który jest tak blisko Unix jak to możliwe. Czy FreeBSD jest dobrym wyborem? Wiem, że istnieje również OpenBSD, prawdopodobnie coś innego.Unix i FreeBSD

Dodatkowe informacje: Językiem programowania jest C++, używam GCC, z niektórymi bibliotekami przenośnymi: Boost i wxWidgets.

+2

jaki program piszesz? skrypty powłoki? Program C? – ghostdog74

+0

Unix nie jest systemem operacyjnym, jest rodziną systemów operacyjnych. Wykonujesz większość właściwej pracy za pomocą gcc. –

+0

@Andrew, termin UNIX jest przeciążony, więc jego zamieszanie jest zrozumiałe ... UNIX wcześniej był systemem operacyjnym, a teraz jest otwartym standardem dla systemów operacyjnych, a także rodziny systemu operacyjnego (czyli tych, które są zgodne z spec). –

Odpowiedz

6

OpenBSD, FreeBSD, DragonFlyBSD, NetBSD, Open Solaris, itp. Są otwartymi i darmowymi systemami operacyjnymi Unix, nie można tak naprawdę zbliżyć się do nich.

Aby obejść ograniczenia instalacji, rozważ wirtualizację za pomocą narzędzia, takiego jak Sun Virtual box.

+5

BSD nie są certyfikowanymi Unixami, ale Open Solaris jest. – reinierpost

+0

Dziękuję, to jest informacja, której szukam. Moim ograniczeniem jest to, że program nie jest open source. Muszę dostarczyć pliki binarne kompatybilne z docelowym systemem operacyjnym. Więc muszę zainstalować jeden z tych systemów operacyjnych i zbudować tam program, czy to prawda? –

+0

@Alex: Kompatybilność binarna będzie trudna. Dowiedz się więcej szczegółów na temat systemu docelowego. Twoje pliki binarne FreeBSD x86 nie będą działać poprawnie w systemie Solaris działającym w systemie Sparc. –

5

W zależności od tego, co robi twój program, w jakim języku jest napisany itp. Możesz napisać przenośny kod na dowolnej platformie. Na przykład rutynowo podłączam jedną z moich aplikacji napisaną w C++ z Windowsa, gdzie ją rozwijam, do Linuksa, z jedną niewielką zmianą (usuwam obsługę ODBC). Tak więc wybór systemu operacyjnego do wykonania nie jest krytyczny - świadomie pisze się przenośny kod.

2

jakie programy piszesz i jakiego języka używasz? Niezależnie od tego, czy korzystasz z FreeBSD, czy Solaris, możesz napisać dość przenośny kod używając C++/Python/Perl itd. Te języki programowania mogą działać na różnych platformach i nie sądzę, że będziesz miał z tym poważny problem.

3

Spójrz na standard POSIX. Jest to przenośny interfejs API obsługiwany przez większość uniksowych systemów operacyjnych.

3

Zobacz Single UNIX Specification. Jeśli zrobisz tylko założenia podane na stronach podręcznika dostarczonych przez OpenGroup w jego specyfikacji Single UNIX, twój kod powinien działać na wszystkich systemach operacyjnych zgodnych z UNIX.

Jeśli używasz mojego development/coding search engine, jest on silnie stronniczy na rzecz źródeł ze specyfikacji Single UNIX, a kliknięcie "Single UNIX Specification" ograniczy wyszukiwanie do tego źródła. Dopóki ograniczasz się do gwarancji określonych przez specyfikację, powinna działać na wszystkich wersjach systemu UNIX.

Należy również zwrócić uwagę, że jeśli ograniczysz się do korzystania tylko z funkcji udostępnianych przez standard ISO C++, biblioteki Boost C++ i WxWidgets, powinieneś być w stanie kierować nie tylko wszystkie warianty systemu UNIX , ale także Windows. Jeśli jednak chcesz tylko kierować do systemu UNIX, każdy z interfejsów systemowych w specyfikacji pojedynczego UNIX, jak to tam określono, powinien być bezpieczny.

Pod względem środowiska programistycznego, polecam zainstalowanie kopii Ubuntu Linux w VirtualBox, ponieważ stworzenie środowiska programistycznego pracy na danej dystrybucji Linuksa jest tak proste, jak jednym wezwaniem sudo apt-get install i Linux jest de -facto zgodne z UNIX. Pojedyncze polecenie sudo apt-get install build-essential pkg-config g++ automake autoconf cmake doxygen libboost1.40-dev libwxgtk2.8-dev jest wystarczające, aby uzyskać w pełni działające środowisko programistyczne C++ w systemie Ubuntu z zainstalowanymi bibliotekami WxWidget i Boost C++.

0

Większość wymienionych systemów ma (ograniczone) wsparcie dla uruchamiania plików binarnych dla systemu Linux. Możesz spróbować zbudować i rozpowszechnić plik binarny Linux. Jeśli zbudujesz go na czymś podobnym do RHEL4, większość z nich będzie obsługiwać ABI niezbędną do uruchomienia programu.

Na przykład flashplugin na większości BSD jest w rzeczywistości linux-flashplugin.