找不到 ELF header
Can't find ELF header
我正在尝试在 Debian 机器上使用 zwo asi python 绑定库(可用 here)。
为此,我从 zwo's website(Mac 和 Linux 版本下载了 SDK,将 ASICamera2.h 文件放在 /usr/include
和 运行 在存档的 lib 文件夹中的 README.txt 中编写的命令。
使用命令时,我有效地得到了“200”答案:
cat /sys/module/usbcore/parameters/usbfs_memory_mb
然后我在 /etc/profile
中创建了一个名为 ZWO_ASI_LIB 的环境变量,它引用了我之前提到的 ASICamera2.h 文件。
这是我的 python 脚本的代码(它不是完整的代码,而是导致问题的部分):
import os
import sys
import zwoasi
def startCamera():
env_filename = os.getenv('ZWO_ASI_LIB')
if env_filename:
zwoasi.init(env_filename)
else:
print("Error : Library not found")
sys.exit(1)
startCamera()
当我通过 python3 x.py
命令在我的终端中启动它时,出现此错误:
Traceback (most recent call last):
File "x.py", line 87, in <module>
startCamera()
File "x.py", line 21, in startCamera
zwoasi.init(env_filename)
File "usr/local/lib/python3.7/dist-packages/zwoasi/__init__.py", line 821, in init
zwolib = c.cdll.LoadLibrary(library_file)
File "usr/lib/python3.7/ctypes/__init__.py", line 434, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python3.7/ctypes/__init__.py", line 356, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /usr/include/ASICamera2.h: invalid ELF header
我想我应该在某个地方(.elf 文件?)为 SDK 库准备一个 ELF header,但我没能找到它。可能是我没有引用正确的文件,但根据 the documentation given on the zwo's website,我放入环境变量的文件是 header.
另外,我不太明白他们所说的“在Linux动态和静态库下:ASICamera2.so,ASICamera2.a”
是什么意思
我用的相机是ASI178MC
OSError: /usr/include/ASICamera2.h: invalid ELF header
您已经告诉您的运行时环境 ASICamera2.h
是它应该加载的共享库的名称(使用 dlopen
)。
但是 ASICamera2.h
是 C
header(文本)文件,为该库定义 API,而不是库本身。
相反,您应该将 Python 指向 共享库 (这可能也是您下载的 SDK 的一部分)。通常共享库以 .so
结尾。您指向的文档说该库名为 ASICamera2.so
.
我正在尝试在 Debian 机器上使用 zwo asi python 绑定库(可用 here)。
为此,我从 zwo's website(Mac 和 Linux 版本下载了 SDK,将 ASICamera2.h 文件放在 /usr/include
和 运行 在存档的 lib 文件夹中的 README.txt 中编写的命令。
使用命令时,我有效地得到了“200”答案:
cat /sys/module/usbcore/parameters/usbfs_memory_mb
然后我在 /etc/profile
中创建了一个名为 ZWO_ASI_LIB 的环境变量,它引用了我之前提到的 ASICamera2.h 文件。
这是我的 python 脚本的代码(它不是完整的代码,而是导致问题的部分):
import os
import sys
import zwoasi
def startCamera():
env_filename = os.getenv('ZWO_ASI_LIB')
if env_filename:
zwoasi.init(env_filename)
else:
print("Error : Library not found")
sys.exit(1)
startCamera()
当我通过 python3 x.py
命令在我的终端中启动它时,出现此错误:
Traceback (most recent call last):
File "x.py", line 87, in <module>
startCamera()
File "x.py", line 21, in startCamera
zwoasi.init(env_filename)
File "usr/local/lib/python3.7/dist-packages/zwoasi/__init__.py", line 821, in init
zwolib = c.cdll.LoadLibrary(library_file)
File "usr/lib/python3.7/ctypes/__init__.py", line 434, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python3.7/ctypes/__init__.py", line 356, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /usr/include/ASICamera2.h: invalid ELF header
我想我应该在某个地方(.elf 文件?)为 SDK 库准备一个 ELF header,但我没能找到它。可能是我没有引用正确的文件,但根据 the documentation given on the zwo's website,我放入环境变量的文件是 header.
另外,我不太明白他们所说的“在Linux动态和静态库下:ASICamera2.so,ASICamera2.a”
我用的相机是ASI178MC
OSError: /usr/include/ASICamera2.h: invalid ELF header
您已经告诉您的运行时环境 ASICamera2.h
是它应该加载的共享库的名称(使用 dlopen
)。
但是 ASICamera2.h
是 C
header(文本)文件,为该库定义 API,而不是库本身。
相反,您应该将 Python 指向 共享库 (这可能也是您下载的 SDK 的一部分)。通常共享库以 .so
结尾。您指向的文档说该库名为 ASICamera2.so
.