кросс-компиляция для Android с использованием NDK завершается с ошибкой компилятора - PullRequest
0 голосов
/ 17 июня 2011

Я собираю ядро ​​Android Nexus One из исходного кода, как можно найти на сайте разработчиков HTC . Я получил цепочку инструментов ARM, набрав android NDK с сайта android dev. Я могу запускать make clean и make defconfig без происшествий, но когда я запускаю make, он только добивается успеха перед тем, как столкнуться с ошибками компилятора.

В настоящее время я вижу следующее:

$ MY_DIR / nexus_one / arch / arm / include / asm / glue.h: 156: 29: ошибка: '#' не сопровождается параметром макроса

Оскорбительная строка:

1  /*
2  * Instruction Fault Status Register.  (New register as of ARMv6)
3  * If processor has IFSR then set value, else set translation fault
4  */
5 #if defined(CONFIG_CPU_ABRT_EV7) || defined(CONFIG_CPU_ABRT_EV6)
6 # define CPU_PABORT_IFSR(reg)    mrc p15, 0, reg, cr5, cr0, 1         @asm macro;
7 #else
8 # define CPU_PABORT_IFSR(reg)    mov reg, #5                          @asm macro;
9 #endif

В частности, строка 8 выше - это то, что содержит компилятор. Очевидно, у вас не может быть этого второго знака #, но я не совсем уверен, что происходит в этом коде, и он выглядит довольно важным, поэтому я не хочу его трогать.

Полагаю, я собираю не ту цепочку инструментов, может быть? Или, может быть, я как-то неправильно настроил? Кто-нибудь знает, что это такое?

спасибо, Брайен

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Оказывается, это не имеет ничего общего с конкретным набором инструментов. Знак # нуждался в некотором «побеге». Решение было следующим:

/* this is needed to get the mov reg, 5 macro to compile and function correctly */
#define hash_hackery #
#define f(x) x

#if defined(CONFIG_CPU_ABRT_EV7) || defined(CONFIG_CPU_ABRT_EV6)
# define CPU_PABORT_IFSR(reg)   mrc p15, 0, reg, cr5, cr0, 1         @asm macro;
#else
# define CPU_PABORT_IFSR(reg)   mov reg, f(hash_hackery)5            @asm macro;
#endif

Этот пост был очень информативным в поиске ответа.

1 голос
/ 17 июня 2011

Я настоятельно рекомендую вам использовать набор инструментов CodeSourcery для Linux для компиляции ядра Linux.

...