找不到 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.hC header(文本)文件,为该库定义 API,而不是库本身。

相反,您应该将 Python 指向 共享库 (这可能也是您下载的 SDK 的一部分)。通常共享库以 .so 结尾。您指向的文档说该库名为 ASICamera2.so.