Статьи » Сборка компилятора и виртуальной машины для языка программирования Dart на Ubuntu 11.10
Сборка компилятора и виртуальной машины для языка программирования Dart на Ubuntu 11.10
1. Подготовка системы
По инструкции из официального репозитория языка Google Dart (https://code.google.com/p/dart/wiki/PreparingYourMachine) предлагается использовать скрипт из исходников браузера Chromium, который установит в систему все необходимые зависимости:
wget http://src.chromium.org/svn/trunk/src/build/install-build-deps.sh source install-build-deps.sh
Но данный скрипт предлагает устанавить достаточно большой объем пакетов, большая часть которых, не нужна для компиляции Dart! Поэтому вполне можно ограничится только следующими пакетами:
для 32 разрядных систем
sudo apt-get install libc6-dev sudo apt-get install build-essential subversion python sudo apt-get install gcc-multilib g++-multilib libssl-dev sudo apt-get install openjdk-6-jdk
для 64 разрядных систем необходимо устанавливать так же 32 битные библиотеки, поскольку сборка Dart осуществляется пока только для i386
sudo apt-get install libc6-dev libc6-dev:i386 sudo apt-get install build-essential subversion python sudo apt-get install gcc-multilib g++-multilib libssl-dev sudo apt-get install openjdk-6-jdk sudo apt-get install ia32-libs
2. Установка depot_tools из SVN репозитория Google
svn checkout http://src.chromium.org/svn/trunk/tools/depot_tools export PATH=$PATH:`pwd`/depot_tools
3. Установка dart из SVN репозитория Google
mkdir dart cd dart gclient config http://dart.googlecode.com/svn/trunk/deps/all.deps gclient sync
gclient config http://dart.googlecode.com/svn/trunk/deps/standalone.deps
4. Компиляция исходников
На момент написания статьи, было возможность компиляции только 32 разрядной версии, поэтому при компиляции указывается ключ --arch=ia32. Так же можно указать, собирать ли версию с отладочной информацией, или без с помощью ключей --mode=debug, --mode=release, или ключ --mode=all, чтобы компилировать обе версии.
cd dart ./tools/build.py --arch=ia32
если во время компиляции возникнут следующие ошибки:
CXX(host) out/Debug_ia32/obj.host/v8_base/third_party/v8/src/ia32/lithium-codegen-ia32.o third_party/v8/src/ia32/lithium-codegen-ia32.cc: В функции-члене «void v8::internal::LCodeGen::DoLoadKeyedFastDoubleElement(v8::internal::LLoadKeyedFastDoubleElement*)»: third_party/v8/src/ia32/lithium-codegen-ia32.cc:2235:12: ошибка: variable «elements» set but not used [-Werror=unused-but-set-variable] third_party/v8/src/ia32/lithium-codegen-ia32.cc: В функции-члене «void v8::internal::LCodeGen::DoStoreKeyedFastDoubleElement(v8::internal::LStoreKeyedFastDoubleElement*)»: third_party/v8/src/ia32/lithium-codegen-ia32.cc:3100:12: ошибка: variable «elements» set but not used [-Werror=unused-but-set-variable] third_party/v8/src/ia32/lithium-codegen-ia32.cc:3101:12: ошибка: variable «key» set but not used [-Werror=unused-but-set-variable]
то необходимо в начале файла конфигурации ./tools/gyp/configurations.gypi добавить параметр '-Wno-unused-but-set-variable', и перезапустить сборку,
# Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
{
'variables': {
'common_gcc_warning_flags': [
'-Wall',
'-Wextra', # Also known as -W.
'-Wno-unused-parameter',
'-Wno-unused-but-set-variable',
# TODO(v8-team): Fix V8 build.
#'-Wold-style-cast',
],
# Default value. This may be overridden in a containing project gyp.
'target_arch%': 'ia32',
}
В результате компиляции получатся каталоги:
- ./out/Debug_ia32 - с версией dart с отладочной информацией
- ./out/Release_ia32 - с версией dart без отладочной информацией