Instrukcje kompilacji Mac OS X.
Wymagania wstępne w systemie Mac OS X
10.6.x (Snow Leopard), 10.7.x (lew), 10.8.x (góra Lion), 10.9.x (Mavericks) lub 10.10.x (Yosemite) działa na sprzęcie Intela (sprzęt PowerPC nie jest obsługiwany). Należy pamiętać, że tworzenie wariantu X11 VirtualBox na Mac OS X nie jest obsługiwane.
Xcode pasujące do wersji Mac OS X ( HYPERLINK "http://developer.apple.com/tools/download/" http://developer.apple.com/tools/download/ ):
3.2.0 lub nowszy dla Snow Leopard
4.1.x dla Lion i nowszych (4.2 i nowsze wersje nie będą działały!) Możesz użyć tools / darwin.x86 / bin / xcode-4.1-extrator.sh, aby "zainstalować" potrzebne bity na późniejszych wersjach OS X.
Niektóre rzeczy z MacPorts ( HYPERLINK "http://www.macports.org/" http://www.macports.org/ ). Po zainstalowaniu MacPorts, nie zapomnij dodać następujących dwóch linii do swojego ~ / .profile
export PATH = / opt / local / bin: / opt / local / sbin: $ PATH
export MANPATH = / opt / local / share / man: $ MANPATH
Następnie wykonaj następujące polecenie: dla <Snow Leopard
sudo port install libidl doxygen texlive texlive-latex-extra texlive-fonts-extra cdrtoolsdla> = Snow Leopard (32 Bit)sudo port install libidl + uniwersalny doxygen texlive texlive-latex-extra texlive-fonts-extra cdrtools
Doxygen i texlive * są opcjonalne. W wersji 10.5 może być potrzebna nowsza wersja OpenSSL niż wersja dostarczona przez system. Jeśli tak, wykonaj:
sudo port install openssl
Qt / Mac ( HYPERLINK "http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x" http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x ) Carbon 4.4.x w górę w przypadku Tiger Cocoa 4.5.x w górę w przypadku systemu Leopard / Snow Leopard / Lion
LaTeX ("sudo port install texlive texlive-fonts-extra texlive-latex-extra texlive-latex-recommended") do budowania dokumentacji
Niektóre słowa w systemach operacyjnych 32-bitowych i 64-bitowych
Począwszy od wersji 10.6 Mac OS X jest dostępny w trybie 64-bitowym z 10,7 najbardziej graficzną aplikacją działającą w trybie 64-bitowym. Musimy jednak odróżnić użytkownika od przestrzeni jądra. Ponieważ VirtualBox używa własnych rozszerzeń jądra, musi być zbudowany i uruchomiony w wersji, która pasuje do wariantu jądra. Możesz sprawdzić bieżący tryb jądra, wykonując uname -m . Jeśli pokazuje to i386 , działa w 32- bitach i jeśli pokazuje x86_64 , uruchamia jądro 64-bitowe. Aby przełączać się między tymi trybami podczas uruchamiania (na obsługiwanym sprzęcie), zobacz HYPERLINK "https://support.apple.com/kb/ht3773" ten artykuł o kb . Jeśli system kompilacji nie koryguje wykrycia właściwego trybu jądra, możesz użyć --target-arch =, aby go nadpisać. Należy również pamiętać, że VirtualBox może wykonywać 64-bitowe systemy operacyjne dla gości, nawet jeśli są 32-bitowe.
Budowanie VirtualBox
Przejdź do katalogu głównego źródeł i uruchom skrypt configure:
./configure --able-hardening
Możesz ręcznie ustawić architekturę docelową za pomocą --target-arch = x86 lub amd64 , jeśli wystąpią problemy związane z architekturą.
Jeśli znajdzie wszystko, czego potrzebuje, utworzy plik o nazwie ! AutoConfig.kmk zawierający ścieżki do różnych narzędzi w twoim systemie. Ponadto utworzy skrypt instalacji środowiska o nazwie env.sh. Ten krok należy wykonać tylko raz (jeśli coś zmieni się w konfiguracji narzędzia do kompilacji, może być konieczne powtórzenie go, ale należy pamiętać, że oba pliki wyjściowe zostaną nadpisane). Aby uzyskać dodatkowe opcje, takie jak podanie ścieżki do biblioteki OpenSSL, zobacz ./configure --help .
Ilekroć chcesz zbudować VirtualBox, musisz otworzyć powłokę i pobrać wygenerowany skrypt instalacyjny środowiska env.sh , np.
. ./env.sh
Aby zbudować typ
kmk
Wartością domyślną jest kompilacja wydania, jeśli chcesz wykonać debugowanie lub kompilację profilu, dodaj BUILD_TYPE = debug lub BUILD_TYPE = profil jako argument do kmk lub wyeksportuj go jako zmienną środowiskową w powłoce.
Uruchamianie VirtualBox
Załaduj wszystkie moduły rozszerzeń jądra. Można je znaleźć w out / darwin.x86 / release / dist wraz z małym skryptem ( loadall.sh ), aby je załadować. Wykonaj i upewnij się, że moduły ładują się pomyślnie.Wprowadź / darwin.x86 / release / dist / VirtualBox.app / Contents / MacOS / .
Uruchom ./VirtualBox
Budowanie pakietów OSE do dystrybucjiNigdy nie należy wyłączać hartowania (patrz poprzednia sekcja) podczas tworzenia pakietów do redystrybucji.
Utwardzanie wymaga dodatkowych kroków konfiguracji i późniejszej kompilacji. Domyślny katalog instalacyjny VirtualBox to /Applications/VirtualBox.app/ . Jeśli chcesz to zmienić, powiedz w /Aplikacje/OpenSource/VirtualBox.app/ , musisz dodać następujące do LocalConfig.kmk :
VBOX_PATH_APP_PRIVATE = "/Applications/OpenSource/VirtualBox.app/Contents/MacOS"VBOX_PATH_APP_PRIVATE_ARCH = "/Applications/OpenSource/VirtualBox.app/Contents/MacOS"VBOX_PATH_SHARED_LIBS = "/Applications/OpenSource/VirtualBox.app/Contents/MacOS"
VBOX_PATH_APP_DOCS = "/Applications/OpenSource/VirtualBox.app/Contents/MacOS"
Może również mieć sens wyłączenie niektórych elementów programistycznych, na przykład przypadków testowych. Dodaj następujące do LocalConfig.kmk :
VBOX_WITH_TESTSUITE =
VBOX_WITH_TESTCASES =
Począwszy od VirtualBox 4.1, tworzone są dodatkowe symbole debugowania. Możesz temu zapobiec, dodając następujące do LocalConfig.kmk :
kBuildGlobalDefaults_LD_DEBUG =
Następnie przebuduj VirtualBox i zainstaluj go w / Applications / OpenSource / . Nie ma żadnego wsparcia dla instalacji VirtualBox w katalogu docelowym. Po prostu skopiuj pliki do miejsca docelowego. Teraz upewnij się, że pliki setuid mają odpowiednie uprawnienia:
sudo chown -R root: admin /Applications/OpenSource/VirtualBox.app/sudo chmod u + s /Aplikacje/OpenSource/VirtualBox.app/Contents/MacOS/VirtualBoxsudo chmod u + s /Aplikacje/OpenSource/VirtualBox.app/Contents/MacOS/VirtualBoxVMsudo chmod u + s /Aplikacje/OpenSource/VirtualBox.app/Contents/MacOS/VBoxHeadlesssudo chmod u + s /Aplikacje/OpenSource/VirtualBox.app/Contents/MacOS/VBoxNetAdpCtl
sudo chmod u + s /Aplikacje/OpenSource/VirtualBox.app/Contents/MacOS/VBoxNetDHCP
Kolejnym wymaganiem dotyczącym hartowania jest to, że każdy składnik ścieżki katalogu nadrzędnego VirtualBox.app/ jest własnością root'a, a nie zapisu na świecie . Upewnij się, że tak właśnie jest.
Ścieżki względne vs. bezwzględne w używanych bibliotekach
Jeśli podczas uruchamiania VirtualBox zobaczysz coś takiego jak następujący błąd, musisz zmienić używane biblioteki, aby korzystać z bezwzględnych ścieżek.
VirtualBox: supR3HardenedMainGetTrustedMain: dlopen ("/ Applications / VirtualBox.app / Contents / MacOS / VirtualBox.dylib",) nie powiodło się: \ dlopen (/Aplikacje/VirtualBox.app/Contents/MacOS/VirtualBox.dylib, 10): Biblioteka nie załadowana: QtCore.framework / Versions / 4 / QtCore Referencje od: /Aplikacje/VirtualBox.app/Contents/MacOS/VirtualBox.dylib
Powód: niebezpieczne używanie względnej rpath QtCore.framework / Versions / 4 / QtCore w /Applications/VirtualBox.app/Contents/MacOS/VirtualBox.dylib z ograniczoną binarną
W systemie Mac OS X nie można używać bibliotek ze względnymi ścieżkami do odwoływania się do innych bibliotek, gdy plik wykonywalny ma wartość setuid. Możesz wyświetlić wszystkie połączone biblioteki za pomocą następującego polecenia:
otool -L /Aplikacje/VirtualBox.app/Contents/MacOS/VirtualBox.dylib
Następnie zakładając, że Qt jest zainstalowany w /Applications/VirtualBox.app/Contents/Frameworks/ , możesz zmienić ścieżkę, używając:
install_name_tool -id /Applications/VirtualBox.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui \ /Aplikacje/VirtualBox.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGuiinstall_name_tool -change @executable_path /../ Frameworks / QtCore.framework / Versions / 4 / QtCore \ /Aplikacje/VirtualBox.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore \
/Aplikacje/VirtualBox.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui
Pierwsze polecenie zmienia identyfikator samej biblioteki. Drugi zmienia odniesienia do innych bibliotek. Tam pierwszą ścieżką jest stara odnośna ścieżka, druga to nowa ścieżka, a ostatnia ścieżka to plik do zmiany (patrz man nazwa_instalacji_tool ).Uwaga, musisz to powtórzyć z każdą zaangażowaną biblioteką (przynajmniej VirtualBox.dylib , QtCore , QtGui , QtNetwork , QtOpenGl ).
darkbull