我正在编写一个使用libusb 1.0 和 cImg的相机捕捉程序。它连接到我的Atik 314L天文相机并捕获图像以显示在屏幕上。它在以普通用户或超级用户身份编译时编译良好,在以 root 用户身份执行时运行良好,但在以任何其他方式运行时会产生分段错误。
我正在使用Code::Blocksusb_control_msg()
,调用堆栈显示调用函数时发生分段错误:
#0 (usb_control_msg(dev=0x0, requesttype=64, request=160, value=58880, index=0 bytes=0x7fffffffe5df "\001 \346\377\377\377\177", size=1, timeout=500) (linux.c:152)
我对在 Linux 环境中进行编程相当陌生,我不确定如何才能让普通用户运行它。以下是我迄今为止尝试过的步骤:
- 将我的用户添加到所有用户组,看看这是否是组权限问题(哎呀——我什至尝试将自己添加到“root”,但它没有做任何事情)
- 添加一个规则
/etc/udev/rules.d
,有点像这样:PROGRAM="/home/[username]/git/camera/prog", MODE="0660", GROUP="camera" - 尝试将程序本身的权限更改为 777。不过,这是最后的努力——我真的没想到它会起作用。
我正在学习如何调试,所以如果您需要日志或任何东西来查看问题所在,请告诉我。