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

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

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

Author24 — интернет-сервис помощи студентам
Как загрузить .so библиотеку из текущего каталога? Нормально грузит только с /usr/local/lib . Пробовал записывать путь в LD_LIBRARY_PATH, но безрезультатно. Пробовал создавать файл .conf в /etc/ld.so.conf.d/ , в котором указывал путь к папке в которой находится библиотека. Но все ровно не грузит.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2012, 22:14
Ответы с готовыми решениями:

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

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

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

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

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

11
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.12.2012, 01:48 2
Цитата Сообщение от ВАСИЛЕВС Посмотреть сообщение
Пробовал записывать путь в LD_LIBRARY_PATH, но безрезультатно.
нужно экспортировать
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
06.12.2012, 19:17  [ТС] 3
Цитата Сообщение от 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 4
Цитата Сообщение от ВАСИЛЕВС Посмотреть сообщение
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  [ТС] 5
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 6
попробуй выполнить с правами
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
08.12.2012, 15:21  [ТС] 7
Цитата Сообщение от accept Посмотреть сообщение
попробуй выполнить с правами
Запускается в /home/admin/Libs, а если надо в другой папке?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2012, 04:46 8
скрипт сам с правами выполни (через sudo или войди под рутом)
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
09.12.2012, 14:25  [ТС] 9
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 10
исходный файл библиотеки lt.c
C
1
2
3
4
5
6
#include <stdio.h>
 
void test(void)
{
    printf("Hello, World!\n");
}
создание библиотеки
Код
[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()
запуск
Код
[guest@localhost lib]$ export LD_LIBRARY_PATH=.
[guest@localhost lib]$ ./t.py
Hello, World!
[guest@localhost lib]$
если LD_LIBRARY_PATH не установлена, это выглядит так
Код
[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  [ТС] 11
accept, спасибо. Буду разбираться.

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

Добавлено через 11 минут
Разобрался, вместо .ansi надо использовать gcc .
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.12.2012, 01:30 12
Код
[guest@localhost ~]$ alias .ansi
alias .ansi='gcc -ansi -pedantic -Wall'
[guest@localhost ~]$
это свой алиас
0
11.12.2012, 01:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2012, 01:30
Помогаю со студенческими работами здесь

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

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

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

Поиск файлов и папок в текущем каталоге
Добрый вечер!Нужна программа,которая при ее вызове,переходит в нужную папку(по имени) и выводит...

Найти в текущем каталоге файл с заданным именем
Помогите пожалуйста написать скрипт:cry: очень прошу! Разработать программу, отыскивающую в...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru