Можно ли ускорить сборку crosstool-ng после возникновения ошибок? - PullRequest
10 голосов
/ 28 марта 2012

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

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

`

Теперь, после 50 минут компиляции, он прерывается с ошибкой:

[ОШИБКА] configure: error: expat отсутствуетили непригодный для использования "

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

Ответы [ 2 ]

16 голосов
/ 14 ноября 2012

Да, это возможно.Запустите ct-ng следующим образом

CT_DEBUG_CT_SAVE_STEPS = 1 сборка ct-ng

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

ct-ng list-steps

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

RESTART = libc_start_files ct-ng build

8 голосов
/ 08 августа 2013

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

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

для 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 build для xscale

...