Как мне собрать PKGCONF и LIBFFI, а затем Python3.9 с поддержкой ctypes без sudo и доступом для записи в /usr/local?

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

2
05.02.2021, 20:56
3 ответа

Мне нужно было просто подождать, пока утром у меня не прояснится голова. Я смог отследить недостающую часть здесь:

Установить C _ВКЛЮЧИТЬ _ПУТЬ

setenv C_INCLUDE_PATH $HOME/LIBRARIES/include

Спасибо за помощь telcoM! Я бы застрял в неправильном пути, пытаясь найти -причину этого.

0
18.03.2021, 22:33

У меня была точно такая же проблема.

build/lib.linux-x86_64-3.9/_ctypes.cpython-39-x86_64-linux-gnu.so

будет сгенерирован make, но не связан с libffi(, как я выяснил с помощьюldd). Когда впоследствии makeзапустит setup.py, я получу точно такую ​​же ошибку :

.
*** WARNING: renaming "_ctypes" since importing it failed:
build/lib.linux-x86_64-3.9/_ctypes.cpython-39-x86_64-linux-gnu.so:
undefined symbol: ffi_prep_cif

Following modules built successfully but were removed because they could not be imported:
_ctypes

Но в моем случае exporting C_INCLUDE_PATHне было проблемой. Проблема заключалась в том, что _ctypes.cpython-39-x86_64-linux-gnu.soбыл скомпилирован без -lffi. Мне пришлось взломать setup.py, добавив строку

ext.libraries.append('ffi')

в конце определения функции

def detect_ctypes(self):

Для протокола: я запустил скрипт configureс

CPPFLAGS="-I/my/path/include" LDFLAGS="-Wl,-rpath=/my/path/lib64 -Wl,-rpath=/my/path/lib"./configure --prefix=/my/path --build=x86_64-redhat-linux --enable-shared --enable-optimizations

Я не уверен, что явные CPPFLAGSи LDFLAGSнеобходимы во всех случаях.

1
05.09.2021, 20:13

Я знаю, что проблема ОП была решена, но у меня была та же проблема с решением, которое ОП не работало для меня. Я скачал версию AppImage , которая мне подошла.

0
29.06.2021, 08:54

Теги

Похожие вопросы