python - 库只会加载 LD_PRELOAD

标签 python linux ubuntu shared-libraries shared-objects

操作系统: Ubuntu 16.04 64 位

python : 2.7.12

我有一个非常简单的 Python 程序,它只加载了两个库 libhidapi-hidrawlibpcProxAPI。后者依赖于前者。

from ctypes import *

hidapi = CDLL('/home/wsharp/Source/pyprox/libhidapi-hidraw.so')
pcProxAPI = CDLL('/home/wsharp/Source/pyprox/libpcProxAPI.so')

r = pcProxAPI.usbConnect()

如果我运行 >python myfile.py,我会收到以下错误:"undefined symbol: hid_send_feature_report"

但是,如果我运行 >LD_PRELOAD=./libhidapi-hidraw.so python myfile.py,我不会收到任何问题。

我试过将 libhidapi-hidraw.so 放在 /usr/libldconfig 来源的其他路径中,但没有成功。我不确定我做错了什么,但这让我发疯。任何帮助将不胜感激。

编辑

包括 sudo ldconfig -v 2>/dev/null | 的输出grep -v ^$'\t'

sudo ldconfig -v 2>/dev/null | grep -v ^$'\t'
/usr/lib/x86_64-linux-gnu/libfakeroot:
/lib/i386-linux-gnu:
/usr/lib/i386-linux-gnu:
/usr/local/lib:
/lib/x86_64-linux-gnu:
/usr/lib/x86_64-linux-gnu:
/usr/lib/x86_64-linux-gnu/mesa-egl:
/usr/lib/x86_64-linux-gnu/mesa:
/lib:
/usr/lib:

编辑 2

ldd libpcProxAPI.so
    linux-vdso.so.1 =>  (0x00007fff9d3b9000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f276c231000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f276bf28000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f276bd11000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f276b948000)
    /lib64/ld-linux-x86-64.so.2 (0x000055dfcf780000)

最佳答案

确认您是否将文件放在链接器搜索的路径之一中:

ldconfig -v 2>/dev/null | grep -v ^$'\t'

如果不是,你有几个选择:

  1. 将 LD_LIBRARY_PATH 设置为包含 .so 文件的目录
  2. 将目录添加到/etc/ld.so.conf 并运行 ldconfig -(需要 root)

关于python - 库只会加载 LD_PRELOAD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40698180/

相关文章:

ubuntu - 无法通过 IAP 连接到运行 Ubuntu 22.04 LST 的 GCP 实例

python - 在 Python 开源项目中合并第三方库的首选传统方式是什么?

python - 使用它们时最优雅的python处理空/缺失/未初始化对象/属性的方法

linux - 文件的所有权正在自动更改

c - exit(0) 和僵尸进程有什么关系

python - 如何在 python 脚本中执行多个 CLI 命令?

java - 上下文路径中的应用程序无法启动 Tomcat 7 Ubuntu

Python: elasticsearch.exceptions.NotFoundError: NotFoundError(404, '{"code":404 ,"message":"HTTP 404 Not Found"}')

python - python安装scikit-learn的问题

linux - 如何找到Linux节点的SCOM管理组