LINUX.ORG.RU

Как при линковке получаются имена функций


0

0

Вчера возился с одним проприетарным модулем для ядра там объектники в модуль компиляться так вот в документации сказанно что редхат 7.3 должен компилиться и действительно на одной машине все скомпилилось и заработало правда выдало пару варнингов а на другой тоже стоит реднат 7.3 тоже стандартное ядро (i386) модуль компилится тех ворнингов не выдает но при загрузке не может отрезолвить некоторые имена функции. Ну вообщем то ладно скомпилил я на этой машине свое ядро на нем варнингов не выдавало однако и модуль нормально загрузился... (кстати модуль собраный на первой машине тоже грузился на второй)

Сообственно вопрос когда компилиш в объектниках имена функций принимают вид <имя функции>_R45ffer454, короче в конце ерунда таки вот почему на одной машине это ерунда совпдала с тем сто в ядре а на другой нет. И собственно как ГСиСи выберает что за крикозяблы там написать... Спасибо.

anonymous

Ключ в слове "проприетарный". В ядре есть такой макрос как EXPORT_SYMBOL_GPL он позволяет использовать символы в ядре только для модулей в которых есть MODULE_LICENSE("GPL") см. /usr/src/linux/include/module.h. Скорее всего это изза этого, в 2.6.13 например поменяли кое что в области работы с девайсами, часть символов оставили только для GPL.

Какие версии у ядер и что за модули?

SatanClaus ★★★
()
Ответ на: комментарий от SatanClaus

ядро 2.4.18 дрова к карточке LinkSYS HPN200 (Home PNA adapter) таки я говорю же совершенно два одинаковых RedHat 7.3 с ядрами по дефолту

anonymous
()
Ответ на: комментарий от SatanClaus

Или скопировать в /sbin /sbin/genksyms.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.