Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Проблемы со сборкой make (Linux)

Автор: maddog
Дата сообщения: 23.08.2004 06:13
после запуска make для установки Promice TX4000 вылетает такая вот ошибка:

pishell.o(.text+0x787): In function `pishell':
: the `gets' function is dangerous and should not be used.
pierror.o(.text+0x19f): In function `pierror':
: undefined reference to `errno'
pierror.o(.text+0x1b8): In function `pierror':
: undefined reference to `errno'
piutil.o(.text+0xb39): In function `piinit':
: undefined reference to `errno'
collect2: ld returned 1 exit status
make: *** [loadice] Error 1

Объясните, пожалуйста, как выяснить что ему надо. Просьба, если возможно, описать в болле общем случае, т.к. это не в первой.
Автор: ooptimum
Дата сообщения: 23.08.2004 09:04
Linux? *BSD?

Цитата:
pierror.o(.text+0x1b8): In function `pierror':
: undefined reference to `errno'

В функции pierror имеется обращение к объекту с именем errno (скорее всего это переменная), но ни в одном из файлов проекта, включая подключенные заголовочные файлы, "видимых" из файла pierror.с (?), нет определения этого объекта. Проверь, что ты компилируешь драйвер под то ядро, под которое он написан. Почитай документацию.
Автор: maddog
Дата сообщения: 23.08.2004 15:22
Операционка Linux, компилю именно под 2.4 (Red Hat 9). В инструкции написано все просто: Запустите makе, затем make install и все
Автор: c0d3r
Дата сообщения: 24.08.2004 08:31
А что тут не ясно? Вначале он пишет, что используется функция gets, которая не безопасна (подробнее читай тут: http://kalinin.ru/programming/cpp/15_08_00.shtml). Потом жалуется, что переменная errno не определена. Многие функции используют ее, выставляя то или иное значение в случае ошибки. Если я правильно помню определена она в файле stdlib.h. Т.е. тебе нужно найти файлы в которых используются эта переменная (используй grep -R errno SOURCE) и проверить, чтобы там была строчка #include <stdlib.h> и если ее нет, то добавить.

Хотя, возможно, я и не прав...
Автор: maddog
Дата сообщения: 24.08.2004 14:46
Исправил, не помогло, хотя мне казалось до этого что проблема именна в библиотеках, я вот только незнал в каких
Автор: ooptimum
Дата сообщения: 24.08.2004 18:28
Никакие библиотечные модули не могут использоваться в модулях ядра. Только сервисы, предоставляемые самим ядром. Дело не в библиотеках, в общем.
Автор: c0d3r
Дата сообщения: 25.08.2004 11:31

Цитата:
Никакие библиотечные модули не могут использоваться в модулях ядра. Только сервисы, предоставляемые самим ядром.

Ну вот: я же говорил, что могу быть не прав ;)) ooptimum прав - я даже вспомил, что вместо printf() в ядре и его модулях используется printk()

Страницы: 1

Предыдущая тема: Драйвер сетевой карточки - непонятка с доп. вкладками.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.