Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

Драйвер lcomp_linux для ядра 6

Вы не вошли.

 Поиск | Регистрация | Вход 

ORBITA
22.09.2023 09:47:03
#1

Гость

Драйвер lcomp_linux для ядра 6

Драйвер lcomp_linux не собирается под ядро Linux версии 6.х. Для версии ядра 5 все собиралось и работало исправно.

24.09.2023 14:23:22
#2

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,288

Re: Драйвер lcomp_linux для ядра 6

Выложил обновленную версию пакета драйвера lcomp-dkms версии 1.58.5, должна теперь собираться нормально (пробовал на 6.5.4). Проверьте.

ORBITA
26.09.2023 08:58:25
#3

Гость

Re: Драйвер lcomp_linux для ядра 6

А подскажите откуда скачать версию 1.58.5. У вас на сайте в разделе загрузок только старая версия 1.57 лежит..

26.09.2023 11:06:38
#4

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,288

Re: Драйвер lcomp_linux для ядра 6

Если у Вас один из поддерживаемых дистрибутивов (перечислены в далее указанном документе), то можно поставить готовые пакеты, как описано тут - https://www.lcard.ru/download/lcard_lin … utions.pdf. Для lcomp нужны пакеты lcomp-dkms (драйвер) и liblcomp1 (библиотека) + liblcomp1-dev / liblcomp1-devel (в зависимости от того, deb или rpm дистрибутив у Вас) (файлы для разработки своей программы).

Либо можно взять исходные коды с gitlab и собрать самостоятельно:
https://gitlab.com/l-card/acq/devices/e … iver_linux - драйвер
https://gitlab.com/l-card/acq/devices/e … mp_library - библиотека.
Для сборки понадобится использовать cmake для генерации makefile, далее уже обычным make (для драйвера отдельно цели lcomp-drv / lcomp-drv-install / lcomp-drv-clean для обычной сборки модуля или lcomp-dkms-install для сборки через dkms).

ORBITA
26.09.2023 16:47:33
#5

Гость

Re: Драйвер lcomp_linux для ядра 6

Теперь собирается и работает. Спасибо.

Seyran
27.09.2023 08:49:25
#6

Гость

Re: Драйвер lcomp_linux для ядра 6

Добрый день, пытаюсь собрать под Астра Linux, ошибка на этапе генерации макефайлов, ругается что папка packages пуста.

и кстати ключ репозитория из файла https://www.lcard.ru/download/lcard_lin … utions.pdf не доступен

27.09.2023 10:28:13
#7

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

Seyran пишет:

Добрый день, пытаюсь собрать под Астра Linux, ошибка на этапе генерации макефайлов, ругается что папка packages пуста.

закомментировал 51ую строку в CMakeLists.txt и вроде как сгенерились все файлы, но команда make ничего не дает

27.09.2023 10:39:36
#8

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,288

Re: Драйвер lcomp_linux для ядра 6

По поводу ключа, то там идет ссылка на репозиторий для Ubuntu 18.10, который уже не поддерживается, поэтому ссылка не действительна. Но если заменить 18.10 на более новую версию, то в остальном инструкция корректна.

Если используете Astra Linux, то у них на wiki есть таблица совместимости версий Astralinux с версиями Debian:
Common Edition: https://wiki.astralinux.ru/pages/viewpa … d=79168056
Special Edition: https://wiki.astralinux.ru/pages/viewpa … d=53646577

Для соответствия номеров и названий версий Debian можно посмотреть страницу релизов Debian: https://www.debian.org/releases.
Например, если Ваша версия Astra соответствует Debian Stretch, то это Debian 9.
И в этом случае в инструкции https://www.lcard.ru/download/lcard_lin … utions.pdf нужно указывать Debian_9.0 вместо xUnbuntu_18.10 (взятой там для примера).

То что указали, что ссылка не работает, спасибо, как дойдут руки, постараюсь обновить документ и заодно включить данную информацию о соответствии с Astra.

По поводу packages, то это эта директория идет как субмодуль, видимо у Вас скопировалось содержимое без него.
Для получения исходников с субмодулями можно из командной строки вызвать:

git clone --recurse-submodules https://gitlab.com/l-card/acq/devices/emodules/shared/lcomp/drivers/lcomp_driver_linux.git <директория для сохранения>

Автогенерируемые в gitlab архивы (доступные по Download) не включают суммодули, этот глюк (типичный для многих серверов систем контроля версий) к сожалению так и не поправили видимо...

27.09.2023 15:04:41
#9

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

@astra:~/LCard/lcd/lcomp_driver_linux/build$ cmake -G "Unix Makefiles" ..
-- The C compiler identification is GNU 8.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/seyran/LCard/lcd/lcomp_driver_linux/build
@astra:~/LCard/lcd/lcomp_driver_linux/build$ make

вот вывод cmake, а дальше команда make  и ничего не происходит

27.09.2023 15:05:37
#10

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

я так понимаю чего то в системе не хватает ?

27.09.2023 17:06:01
#11

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,288

Re: Драйвер lcomp_linux для ядра 6

Для сборки драйвера для make нужно указать цель в зависимости от варианта сборки.

Если будете просто устанавливать файлы модуля напрямую, то

make lcomp-drv
sudo make lcomp-drv-install

Если через систему dkms, которая управляет добавлением внешних модулей в ядро (должен стоять пакет dkms):

sudo make lcomp-dkms-install
28.09.2023 10:49:58
#12

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

Алексей L Card пишет:

Если будете просто устанавливать файлы модуля напрямую, то

make lcomp-drv
sudo make lcomp-drv-install
Если через систему dkms, которая управляет добавлением внешних модулей в ядро (должен стоять пакет dkms):

sudo make lcomp-dkms-install

вот это бы все тоже в инструкцию добавить

28.09.2023 11:02:51
#13

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

подскажите еще пожалуйста, при сборке библиотеки lcomp не находит atomic_ops.h, его фактически нет в репозитории

28.09.2023 11:11:05
#14

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

и еще, мне надо получить в итоге сборки динамическую библиотеку с расширением so чтобы иметь возможность подгрузить её из С#, для этого надо будет что то переделывать ?

28.09.2023 11:48:20
#15

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,288

Re: Драйвер lcomp_linux для ядра 6

Для основанных на Debian дистрибутивов (как Astra) для atomic-ops должен стоять штатный пакет libatomic-ops-dev. Если ставить библиотеку из пакета, то эта зависимость уже прописана, если собирать вручную, то нужно поставить явно:

sudo apt install libatomic-ops-dev

После сборки библиотеки Вы как раз и получите .so файл.
Другой вопрос, что liblcomp написан на C++ с использованием виртуальных методов, и весь вопрос, насколько это можно напрямую использовать из C#. С обычными C функциями с этим проблем нет и в случае lcomp для Windows некоторыми клиентами для работы из C# использовалась "обертка" на C для lcomp (wlcomp), функции которой уже вызывались из C#.

29.09.2023 08:53:40
#16

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

Алексей L Card пишет:

Другой вопрос, что liblcomp написан на C++ с использованием виртуальных методов, и весь вопрос, насколько это можно напрямую использовать из C#.

я пробовал тестовую самописную библиотеку на С++ написанную на GCC 8.3
и через DllImport все public extern методы и функции доступны из C# на астре.

Алексей L Card пишет:

"обертка" на C для lcomp (wlcomp), функции которой уже вызывались из C#.

а есть версия для линукс этой библиотеки ??

29.09.2023 08:55:28
#17

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

https://www.codeproject.com/Tips/709270 … C-Librarie вот кстати пример взаимодействия кода на C++ с кодом из  C#, которым я руководствовался.

29.09.2023 09:25:43
#18

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

2023-09-29-10-22-00.png

это драйвер не встал ?

29.09.2023 09:28:54
#19

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

2023-09-29-10-27-08.png

вот как устройство видится в системе

02.10.2023 08:11:43
#20

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

все выходные просидел в попытках установить драйвер из репозитория xUbuntu 21.10 в итоги везде ошибки в зависимостях, например при установке ltrd следующая ошибка

Следующие пакеты имеют неудовлетворенные зависимости:
  ltrd: Зависит: libc6 (>= 2.34) но 2.28-10deb10u2+ci202302271750+astra5 должен быть установлен
E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.

и еще в инструкции в разделе 7 для Debian подобных систем описана установка deb пакетов, но ни в одном из репозиториев нет deb пакетов, везде тарболы

02.10.2023 20:26:49
#21

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,288

Re: Драйвер lcomp_linux для ядра 6

ltrd: Зависит: libc6 (>= 2.34) но 2.28-10deb10u2+ci202302271750+astra5 должен быть установлен

Это сообщение говорит о том, что библиотека собрана c libc версии 2.34, которая как раз в Ubunutu 21.10, а у Вас в системе стоит версии 2.28 (и от этой версии зависят другие пакеты и ее нельзя обновить). Версии libc (не считая номера патча) как правило не меняются в рамках одного дистрибутива, а только при переходе от одной версии дистрибутива к другой.
Нужно ставить из того дистрибутива, на котором основана Ваша версия Astra. И судя по версии "2.28-10deb10u2" из Вашего сообщения, она основана на Debian-10. Вот и ставьте пакеты из Debian-10, а не Ubuntu.

и еще в инструкции в разделе 7 для Debian подобных систем описана установка deb пакетов, но ни в одном из репозиториев нет deb пакетов, везде тарбол

.deb файлы лежат в папках архитектуры, для которой они предназначены. Например для Debian 10 для 64-битной архитектуры x64: https://download.opensuse.org/repositor … _10/arm64/

"liblcomp.so.1: cannot open shared object file: No Such file or directory"

Сообщение ровно то и означает, что не найден указанный файл библиотеки. Драйвер тут не причем. Он у Вас должен быть в стандартной папке (обычно /usr/lib), либо должен быть указан путь, откуда его брать одним из способов. Если Вы ставите из пакетов, он туда поставится автоматом. Если сами собирали, то установлен ли он у Вас и куда? Если делали через make install, то во время выполнения пишется папка, куда файлы скопированы. Проверьте, т.к. при ручной установке по умолчанию обычно используется директория с local, т.к. в основное дерево файлов по хорошему ставить нужно только через пакеты, чтобы не было конфликтов, и эта локальная директория может отсутствовать в путях, где ищутся библиотеки по умолчанию.

03.10.2023 07:58:58
#22

Участник
Здесь с 27.09.2023
Сообщений: 12

Re: Драйвер lcomp_linux для ядра 6

Алексей L Card пишет:

ltrd: Зависит: libc6 (>= 2.34) но 2.28-10deb10u2+ci202302271750+astra5 должен быть установлен

Это сообщение говорит о том, что библиотека собрана c libc версии 2.34, которая как раз в Ubunutu 21.10, а у Вас в системе стоит версии 2.28 (и от этой версии зависят другие пакеты и ее нельзя обновить). Версии libc (не считая номера патча) как правило не меняются в рамках одного дистрибутива, а только при переходе от одной версии дистрибутива к другой.
Нужно ставить из того дистрибутива, на котором основана Ваша версия Astra. И судя по версии "2.28-10deb10u2" из Вашего сообщения, она основана на Debian-10. Вот и ставьте пакеты из Debian-10, а не Ubuntu.

и еще в инструкции в разделе 7 для Debian подобных систем описана установка deb пакетов, но ни в одном из репозиториев нет deb пакетов, везде тарбол

.deb файлы лежат в папках архитектуры, для которой они предназначены. Например для Debian 10 для 64-битной архитектуры x64: https://download.opensuse.org/repositor … _10/arm64/

"liblcomp.so.1: cannot open shared object file: No Such file or directory"

Сообщение ровно то и означает, что не найден указанный файл библиотеки. Драйвер тут не причем. Он у Вас должен быть в стандартной папке (обычно /usr/lib), либо должен быть указан путь, откуда его брать одним из способов. Если Вы ставите из пакетов, он туда поставится автоматом. Если сами собирали, то установлен ли он у Вас и куда? Если делали через make install, то во время выполнения пишется папка, куда файлы скопированы. Проверьте, т.к. при ручной установке по умолчанию обычно используется директория с local, т.к. в основное дерево файлов по хорошему ставить нужно только через пакеты, чтобы не было конфликтов, и эта локальная директория может отсутствовать в путях, где ищутся библиотеки по умолчанию.

он прилинкован в CodeBlocks и путь для компилятора указан, странно, попробую положить по пути который вы указали. Спасибо.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск