Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Embedded Linux
Компиляция модуля outside kernel source
Pav
Добавлено 11.01.2012 15:02 Редактировалось 11.01.2012 15:04
0
Сообщение: 1
Pav
0

Пункты: 262
Регистрация: 25.02.2011
Добрый день

Появилась следующая проблема.

Имеется исходный код модуля ядра, котоый я собираю outside kernel source. Я сделал такой Makefile:

Код

obj-m += my_module.o

mebius-objs := module.o component_1.o component_2.o component_3.o

KDIR := /media/Storage/Work/FreeScale/linux-2.6.31
PWD := $(shell pwd)

# buggers didn't work - changed inclusions to #include "../Interface/header.h"
#EXTRA_CFLAGS += -I$(PWD)/../Interface/
#C_INCLUDE_PATH += $(PWD)/../Interface/

all:
echo
make ARCH=arm CROSS_COMPILE=/media/Storage/Work/FreeScale/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi- -C $(KDIR) M=$(PWD) modules

clean:
make -C $(KDIR) M=$(PWD) clean


И все бы здорово, но во время линковки в лог кидается
Код

WARNING: "__aeabi_d2uiz" [/media/DISK/Work//DRV/module.ko] undefined!
WARNING: "__aeabi_i2d" [/media/DISK/Work/DRV/module.ko] undefined!
WARNING: "__aeabi_dmul" [/media/DISK/Work/DRV/module.ko] undefined!


Так что и сам модуль не хочет грузится - ругается на эти же 3 символа.

Собираю под линуксом (fedora 15) для iMX23.
В /media/Storage/Work/FreeScale/linux-2.6.31 лежит собранное ltib'ом ядро,
/media/Storage/Work/FreeScale/gcc-4.1.2-glibc-2.5-nptl-3 - сам компилятор.

Пожалуйста подскажите, что нужно добавить или сделать для правильной компиляции.

Заранее благодарю.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 11.01.2012 17:04 Сообщение: 2
sasamy
4.70

Пункты: 76640
Регистрация: 14.08.2009
Использовать операции с floating point в ядре - плохая идея. Эти ф-ции реализованы помоему в libgcc.
Спуститься к концу Подняться к началу
Персональная информация
Pav
Добавлено 11.01.2012 17:33 Сообщение: 3
Pav
0

Пункты: 262
Регистрация: 25.02.2011
Цитата
Использовать операции с floating point в ядре - плохая идея. Эти ф-ции реализованы помоему в libgcc.


На самом деле в коде нет операций с float, но есть с long long.
Может есть какой ключ, чтобы прилинковать gcc'шные вызовы?

Заранее большое спасибо.
Спуститься к концу Подняться к началу
Персональная информация
Lampus
Добавлено 11.01.2012 19:21 Сообщение: 4
Lampus
5

Пункты: 3552
Регистрация: 26.04.2011
В ядре нет доступа к функциям стандартной сишной библиотеки. Можете показать код, или это секрет?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 11.01.2012 21:51 Сообщение: 5
sasamy
4.70

Пункты: 76640
Регистрация: 14.08.2009
Цитата

На самом деле в коде нет операций с float, но есть с long long.


На самом деле эти ф-ции для работы с double, а есть данные такого типа в коде или нет мне не видно. Все возможно что это баг в компиляторе, но я бы лучше код сначала проверил, сомнительно что компилятор ошибся.
Спуститься к концу Подняться к началу
Персональная информация
Pav
Добавлено 12.01.2012 02:15 Сообщение: 6
Pav
0

Пункты: 262
Регистрация: 25.02.2011
Я долго промаялся - в итоге начал почти с нуля и постепенно добавлял функционал аждый раз проверяя, что модуль работает.

В конце - все заработало: эти непонятные символы пропали при компиляции.

Всем большое спасибо за помощь
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux