Я работаю над интегрированным SDK для микропроцессора powerpc, в котором есть несколько модулей ядра.
Ядро (3.12.37) и набор инструментов (powerpc gcc 4.9.2), предоставленные проектом Yocto.
Когда я делаю SDK на собственной машине (x86_64bit Ubuntu 14) с помощью упомянутого набора инструментов и источника ядра, я вижу эти предупреждения во время компиляции модуля ядра:
WARNING: "__udivdi3" [modules/foo.ko] undefined!
WARNING: "__umoddi3" [modules/foo.ko] undefined!
Эти предупреждения появляются, когда я insmod
модуль ядра.
Я понял, что эти функции используются для 64-битных операций, и libgcc имеет эти функции.
это флаги компиляции:
"-Wall -Werror -gdwarf-3 -Wframe-larger-than=16384 -mcpu=powerpc"
также, я дал этот флаг для статической компиляции "-Wl,-static-libgcc"
и не работал.
мои вопросы:
почему компоновщик будет использовать 64-битные функции, которых нет в powerpc arch ($ KERNELDIR / arch / powerpc)? (Линкер знает, что ARCH - powerpc)
"в пространстве ядра компилятор не использует libgcc или другие функции и библиотеки пользовательского пространства", это правильно? если нет, пожалуйста, объясните мне.
- и, наконец, как я могу решить эту проблему?
Спасибо.