На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
  
> Astra linux нет файлов в папке linux-headers-5.15.0-83-generic , при компиляции проекта fatal error: linux/autoconf.h: Нет такого файла или каталога
    Добрый день. Проблема следующая, пытаюсь собрать сторонние исходники и выходит ошибка

    fatal error: linux/autoconf.h: Нет такого файла или каталога

    Если смотреть makefile то там есть строка

    ExpandedWrap disabled
      KERNELDIR ?= /lib/modules/$(shell uname -r)/build


    где uname -r как раз и выдает linux-headers-5.15.0-83-generic. Дальше интереснее, в каталоге /usr/src/ есть папки linux-headers-5.15.0-83-generic и linux-headers-5.15.0-83, при чем в папке linux-headers-5.15.0-83 файл linux/autoconf.h есть, а в linux-headers-5.15.0-83-generic его нет. В папке /lib/modules/ есть только linux-headers-5.15.0-83-generic

    попытка обновить заголовки говорит что у меня все самое лучшее и последнее из того что может быть. Так вот вопрос знатокам, как быть и как это дело мне таки скомпилировать ????
      Мне сложно сказать по поводу Astra Linux. Но на Calculate уже ядро версии 6.8.4 (под версией 5.15 не идет новый glibc). Я так понимаю, что Astra до сих пор на 5.15 максимум?
        Попробуйте заменить в исходниках linux/autoconf.h на generated/autoconf.h.
        Вроде как уже давно этот файл в ядре так перенесли.
        А это наводит на мысль, что вы пытаетесь собрать что-то очень старое.
          Цитата macomics @
          Мне сложно сказать по поводу Astra Linux. Но на Calculate уже ядро версии 6.8.4 (под версией 5.15 не идет новый glibc). Я так понимаю, что Astra до сих пор на 5.15 максимум?


          так и есть к сожалению

          Цитата grgdvo @
          опробуйте заменить в исходниках linux/autoconf.h на generated/autoconf.h.
          Вроде как уже давно этот файл в ядре так перенесли.
          А это наводит на мысль, что вы пытаетесь собрать что-то очень старое.


          да, пытаюсь собрать дрова под железку от LCard, не очень что то получается. Под RedOS с ядром 6.6 вообще отказывается собираться, там больше уже на много несовместимостей. И, да спасибо, замена на generated/autoconf.h помогла, но куча других ошибок посыпалась.


          кстати, в итоге удалось все таки собрать драйвер, но почему то ругается на неверный формат файла. Я раньше дрова под Linux не собирал, поэтому даже не знаю в какую степь копать.
          Прикреплённый файлПрикреплённый файл2024_04_15_08_21_39.png (8,43 Кбайт, скачиваний: 11)

          Добавлено
          кстати, может еще с проблемой поможете, постоянно лезет вот такая ошибка

          ExpandedWrap disabled
            /home/seyran/lcard/dstr/ldevusbu.c:298:22: error: implicit declaration of function ‘usb_buffer_free’; did you mean ‘usb_buffer_map_sg’? [-Werror=implicit-function-declaration]
                   if(dev->buf) { usb_buffer_free/*_coherent*/(dev->udev, dev->wIrqStep*sizeof(u16), dev->buf, dev->urb->transfer_dma);  dev->buf=NULL; }
                                  ^~~~~~~~~~~~~~~
                                  usb_buffer_map_sg
            /home/seyran/lcard/dstr/ldevusbu.c: In function ‘ldevusb_ioctl’:
            /home/seyran/lcard/dstr/ldevusbu.c:668:21: error: implicit declaration of function ‘usb_buffer_alloc’; did you mean ‘sparse_buffer_alloc’? [-Werror=implicit-function-declaration]
                      dev->buf = usb_buffer_alloc/*_coherent*/(dev->udev, dev->wIrqStep*sizeof(u16), GFP_KERNEL, &dev->urb->transfer_dma);
                                 ^~~~~~~~~~~~~~~~
                                 sparse_buffer_alloc
            /home/seyran/lcard/dstr/ldevusbu.c:668:19: warning: assignment to ‘u8 *’ {aka ‘unsigned char *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
                      dev->buf = usb_buffer_alloc/*_coherent*/(dev->udev, dev->wIrqStep*sizeof(u16), GFP_KERNEL, &dev->urb->transfer_dma);
                               ^
            cc1: some warnings being treated as errors
            make[2]: *** [scripts/Makefile.build:297: /home/seyran/lcard/dstr/ldevusbu.o] Ошибка 1
            make[1]: *** [Makefile:1909: /home/seyran/lcard/dstr] Ошибка 2
            make[1]: выход из каталога «/usr/src/linux-headers-5.15.0-83-generic»
            make: *** [Makefile:28: modules] Ошибка 2


          причем в гугле везде на форумах написано примерно так

          Цитата
          sudo su
          make clean
          make


          но не помогает
          Сообщение отредактировано: Pit-Bul -
            а ведь действительно, открыл /usr/src/linux-headers-5.15.0-83-generic/include/linux/usb.h и в нем нет объявлений ни usb_buffer_free, ни usb_buffer_alloc. Хотя как написанно в мануалах оно должно быть там :(, причем поиском вообще в /usr/src ни в одном заголовочном файле usb_buffer_free не находит (((
            Сообщение отредактировано: Pit-Bul -
              Оно там было в 2010 году )) Переименовали...
              https://git.kernel.org/pub/scm/linux/kernel...f092ea048c7b236
              https://git.kernel.org/pub/scm/linux/kernel...5f922b8dbda1363

              Можно, конечно, заменить в исходниках, как написано в этих комитах.
              Но боюсь, что вы так дальше себе копаете яму.
              Драйвер явно был написан для устройства из позапрошлого десятилетия и для ядра из того же десятилетия.
              Что поменялось архитектурно - трудно сказать!
              И какие подводные камни в работе драйвера вылезут, даже если скомпилируется в конце-концов.

              Попробуйте заменить, но заработает ли?!)
                Тогда лучше просто скачать весь коммит, а не менять что-то в имеющемся.
                  Цитата grgdvo @
                  Оно там было в 2010 году )) Переименовали...
                  https://git.kernel.org/pub/scm/linux/kernel...f092ea048c7b236
                  https://git.kernel.org/pub/scm/linux/kernel...5f922b8dbda1363

                  Можно, конечно, заменить в исходниках, как написано в этих комитах.
                  Но боюсь, что вы так дальше себе копаете яму.
                  Драйвер явно был написан для устройства из позапрошлого десятилетия и для ядра из того же десятилетия.
                  Что поменялось архитектурно - трудно сказать!
                  И какие подводные камни в работе драйвера вылезут, даже если скомпилируется в конце-концов.

                  Попробуйте заменить, но заработает ли?!)



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


                  Цитата macomics @
                  Тогда лучше просто скачать весь коммит, а не менять что-то в имеющемся.


                  не понял о чем вы, если можно, не помешало бы уточнение.
                    Цитата Pit-Bul @
                    не понял о чем вы, если можно, не помешало бы уточнение.

                    Вот вам дали ссылки на два коммита
                    Цитата

                    И предлагают поменять что-то одно в ваших исходниках ядра. Но тогда могут появится действительно большие проблемы. Лучше просто взять весь коммит по ссылке вместо имеющихся исходников. Так он хотя бы точно откомпилируется, если не будет проблем с текущими версиями библиотек.
                    Сообщение отредактировано: macomics -
                      Цитата

                      И предлагают поменять что-то одно в ваших исходниках ядра. Но тогда могут появится действительно большие проблемы. Лучше просто взять весь коммит по ссылке вместо имеющихся исходников. Так он хотя бы точно откомпилируется, если не будет проблем с текущими версиями библиотек.


                      macomics, понял, только вот не возникнет ли проблемы уже со скомпилированными либами. И вот выше я писал, пытался в Астру подсунуть либы скомпилированные в минте с той же версией ядра, и при попытке их загрузить, получил ошибку "Invalid module format"

                      картинка из поста
                      Сообщение отредактировано: Pit-Bul -
                        macomics, Pit-Bul
                        Коллеги!
                        Меня могли неправильно понять!
                        Я не предлагаю менять исходники ядра - это вообще бессмысленно, может много другого отвалиться!
                        Когда я писал поменять в исходниках - я, конечно же, имел в виде менять исходники кастомного драйвера у Pit-Bul.

                        А именно, в последнем примере менять usb_buffer_alloc() на to usb_alloc_coherent() и usb_buffer_free() на usb_free_coherent()
                        в соответствии с изменениями в ядре Linux.

                        Коммиты я привел просто для убедительности, что такие работы велись в ядре, и со стороны разработчиков кастомных драйверов предполагается их доработка.
                        Сообщение отредактировано: grgdvo -
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0384 ]   [ 17 queries used ]   [ Generated: 8.05.24, 14:34 GMT ]