Можно ли ускорить сборки crosstool-ng после возникновения ошибок?

Я использую crosstool-ng для создания tolchain для beagleboard-xm. Сборка продолжается следующим образом:

[информация ] ================================================================= [INFO ] извлечение необходимых компонентов toolchain' tarballs [INFO ] Извлечение tarballs необходимых компонентов toolchain: сделано в 0.51 s (at 00:08) [инфо ] ================================================================= [INFO ] извлечение и исправление toolchain компоненты [INFO ] Извлечение и исправление компонентов toolchain: выполнено за 7.91 s (в 00: 16) [ИНФОРМАЦИЯ ] ================================================================= [INFO ] установка GMP [INFO ] установка GMP: сделано в 140.48 s (at 02:36) [информация ] ================================================================= [INFO ] установка MPFR [INFO ] установка MPFR: сделано в 36.01 s (at 03:13) [информация ] ================================================================= [ИНФОРМАЦИЯ ] Установка PPL . .

`

сейчас, после 50 минут компиляции, он ломается с ошибкой:

[ошибка] настройка: ошибка: expat отсутствует или непригоден для использования"

Я установил необходимый пакет (в Ubuntu 10.04), но ошибка не является проблемой. Ранее я смог добраться до шагов, где он успешно установил компилятор, и до этого не было ошибок. Мне было интересно, есть ли способ пропустить инструмент над ранее успешными шагами, экономя время? Возможно ли это даже с тем, как работает crosstool-ng?

2 ответов


Да, это возможно. Запустите ct-ng вот так

CT_DEBUG_CT_SAVE_STEPS=1 CT-ng build

после сбоя на определенном шаге просто найдите шаг в списке, созданном

список ct-ng-шаги

в этот момент Вы можете возобновить сборку, запустив

RESTART=libc_start_files CT-ng build


да, текущий crosstool-ng поддерживает эту функцию.

  1. включить эту функцию в меню

на ct-ng menuconfig, config Paths and misc options такой

───────────────────── Paths and misc options ─────────────────────
[*] Debug crosstool-NG
[ ]   Pause between every steps
[*]   Save intermediate steps
[*]     gzip saved states
[*]   Interactive shell on failed commands

2.когда вы построите, для каждого шага, сделанного успешно, вы увидите что-то вроде этого:

Saving state to restart at step 'xxx'...

3.когда сбой, после его исправления, используйте ct-ng LAST_SUCCESSFUL_STETP_NAME+ продолжать строить

мой пример:

CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0_build
$ ct-ng list-steps
Available build steps, in order:
  - libc_check_config
  - companion_libs_for_build
  - binutils_for_build
  - companion_libs_for_host
  - binutils_for_host
  - cc_core_pass_1
  - kernel_headers
  - libc_start_files
  - cc_core_pass_2
  - libc
  - cc_for_build
  - cc_for_host
  - libelf_for_target
  - binutils_for_target
  - debug
  - test_suite
  - finish
Use "<step>"p>" as action to execute only that step"+<step>"lt;step>" as action to execute up to tha"<step>+"se "<step>+" as action to execute from that step onward.

CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0_build
$ ct-ng libc+
[INFO ]  Performing some trivial sanity checks
[INFO ]  Build started 20130801.120248
[INFO ]  Building environ'libc'ariables
[EXTRA]  Preparing working directories
[EXTRA]  Restoring state at step 'libc', as requested.
[INFO ]  =================================================================
[INFO ]  Installing C library
[EXTRA]    Configuring C library
[EXTRA]    Building C library
[01:55] /

дополнительные объяснения смотрите мои сообщение:crosstool-ng сборка для xscale