Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561

[Linux] ctypes.CDLL не находит .so в текущем каталоге

04.12.2012, 22:14. Показов 3203. Ответов 11

Студворк — интернет-сервис помощи студентам
Как загрузить .so библиотеку из текущего каталога? Нормально грузит только с /usr/local/lib . Пробовал записывать путь в LD_LIBRARY_PATH, но безрезультатно. Пробовал создавать файл .conf в /etc/ld.so.conf.d/ , в котором указывал путь к папке в которой находится библиотека. Но все ровно не грузит.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2012, 22:14
Ответы с готовыми решениями:

Выполенение батников в каталоге "Temp", а не в текущем каталоге
Доброго времени суток. Подскажите. было все так. запускали батник, появлялась консоль, и консоль запускалась из папки с батником (т.е....

Переименования файлов в текущем каталоге
Написать сценарий для переименования файлов текущего каталога. Первым параметром является шаблон, вторым параметром задается префикс,...

Удаление файлов в текущем каталоге
Помогите решить такую задачу по "Информационной безопасности", надо написать такую программу что когда пользователь запускает программу, в...

11
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.12.2012, 01:48
Цитата Сообщение от ВАСИЛЕВС Посмотреть сообщение
Пробовал записывать путь в LD_LIBRARY_PATH, но безрезультатно.
нужно экспортировать
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
06.12.2012, 19:17  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
нужно экспортировать
Понятное дело.
Bash
1
2
3
LD_LIBRARY_PATH=/home/admin/Libs
export $LD_LIBRARY_PATH
python3 /home/admin/Libs/main.py
Вот так запускал, но толку ноль.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
07.12.2012, 01:44
Цитата Сообщение от ВАСИЛЕВС Посмотреть сообщение
Bash
1
export $LD_LIBRARY_PATH
неправильно это (сначала происходит экспансия)

Bash
1
export LD_LIBRARY_PATH=/home/admin/Libs
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
07.12.2012, 18:32  [ТС]
accept, а относительные пути можно? Например
Bash
1
export LD_LIBRARY_PATH=./
Добавлено через 29 минут

При запуске(хоть полный, хоть относительный путь) получаю ошибку "OSError: libbass.so: failed to map segment from shared object: Operation not permitted"
Гружу стандартно:
Python
1
bass_module =  ctypes.CDLL("libbass.so")
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
08.12.2012, 14:34
попробуй выполнить с правами
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
08.12.2012, 15:21  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
попробуй выполнить с правами
Запускается в /home/admin/Libs, а если надо в другой папке?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2012, 04:46
скрипт сам с правами выполни (через sudo или войди под рутом)
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
09.12.2012, 14:25  [ТС]
accept, я хочу запустить на съемном диске, но не выходит. Может потому что владелец диска root ? Но я через терминал запускаю под рутом:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
admin@ubuntu:~$ su
Пароль:
root@ubuntu:/home/admin# cd /media/F870803F7080069A/Libs
root@ubuntu:/media/F870803F7080069A/Libs# start.sh
start.sh: command not found
root@ubuntu:/media/F870803F7080069A/Libs# ./start.sh
bash: ./start.sh: Отказано в доступе
root@ubuntu:/media/F870803F7080069A/Libs# sh start.sh
Traceback (most recent call last):
  File "pybass.py", line 65, in <module>
    bass_module =  ctypes.CDLL("libbass.so")
  File "/usr/lib/python3.2/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libbass.so: failed to map segment from shared object: Operation not permitted

В результате "OSError: libbass.so: failed to map segment from shared object: Operation not permitted"
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.12.2012, 03:37
исходный файл библиотеки lt.c
C
1
2
3
4
5
6
#include <stdio.h>
 
void test(void)
{
    printf("Hello, World!\n");
}
создание библиотеки
Code
1
2
3
[guest@localhost lib]$ .ansi -fPIC -c lt.c
[guest@localhost lib]$ .ansi -shared lt.o -o liblt.so
[guest@localhost lib]$
исходный файл с подключением библиотеки
Python
1
2
3
4
5
6
#!/usr/bin/env python3
 
import ctypes
 
b = ctypes.CDLL('liblt.so')
b.test()
запуск
Code
1
2
3
4
[guest@localhost lib]$ export LD_LIBRARY_PATH=.
[guest@localhost lib]$ ./t.py
Hello, World!
[guest@localhost lib]$
если LD_LIBRARY_PATH не установлена, это выглядит так
Code
1
2
3
4
5
6
7
8
9
[guest@localhost lib]$ export LD_LIBRARY_PATH=
[guest@localhost lib]$ ./t.py
Traceback (most recent call last):
  File "./t.py", line 5, in <module>
    b = ctypes.CDLL('liblt.so')
  File "/usr/local/lib/python3.3/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: liblt.so: cannot open shared object file: No such file or directory
[guest@localhost lib]$
1
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
10.12.2012, 18:49  [ТС]
accept, спасибо. Буду разбираться.

Добавлено через 9 минут
А что за ".ansi" ?

Добавлено через 11 минут
Разобрался, вместо .ansi надо использовать gcc .
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.12.2012, 01:30
Code
1
2
3
[guest@localhost ~]$ alias .ansi
alias .ansi='gcc -ansi -pedantic -Wall'
[guest@localhost ~]$
это свой алиас
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2012, 01:30
Помогаю со студенческими работами здесь

Поиск файла в текущем каталоге
Программа должна запрашивать с клавиатуры имя файла; и если он существует, выводить зелёным цветом в нижней строке экрана его размер; иначе...

Создание файла в текущем каталоге
new File(&quot;proxy.txt&quot;).createNewFile(); Создает в директории текущего пользователя, т.е C:\Users\Пользователь

Создание файла в текущем каталоге
Напишите программу создание файла в текущем каталоге и записи в него строки, содержащей ФИО вашего классного руководителя. Закройте файл....

Запуск установщика в текущем каталоге
Привет! Подскажите пожалуйста, создал сборку для установки шрифтов в windir\fonts, хотелось бы все это запускать с BAT. В бат файле...

Реализовать удаление файлов в текущем каталоге
Помогите решить такую задачу по &quot;Информационной безопасности&quot;, надо написать такую программу что когда пользователь запускает программу, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru