使用arm-none-eabi-gcc交叉编译zbar,configure选项--disable-pthread,编译报错
4条回答 默认 最新
关注
引自免费微信小程序:皆我百晓生
这个问题涉及到arm-none-eabi-gcc交叉编译器和ZBAR库的问题。首先,我们需要了解一些基本概念和技术。
-
nanosleep
函数是Linux内核中的一个系统调用,用于在用户空间等待一定时间后返回给用户空间。在您的程序中,您尝试通过将睡眠时间和信号处理错误作为参数传递给nanosleep
函数来实现异步编程。然而,当errno
为EINTR时,这可能导致程序崩溃。这是因为在操作系统级别,我们没有控制权限去修改睡眠时间和信号处理错误。 -
在C语言中,
#define_zbar_mutex_lock
、#define_zbar_mutex_unlock
等宏定义用于锁和解锁线程互斥锁。在您的代码中,这些宏定义看起来被误用。lock
应该是pthread_mutex_lock
而不是zbar_mutex_lock
,同样地,unlock
应该是pthread_mutex_unlock
而不是zbar_mutex_unlock
。 -
proc_video_handler
函数试图获取proc->mutex
和proc->nutex
指针,然后进行一些操作。但是,由于proc
结构体中没有这些成员,所以这个访问会失败。 -
proc_cache_polling
函数试图初始化proc->thr_polling
结构,但其中缺少必要的字段,导致编译错误。 -
proc_cache_polling
函数还尝试复制proc->polling
到proc->thr_polling
,这在proc
结构体中并没有这样的映射关系。 -
proc_cache_polling
函数中有一个错误,它尝试在赋值前检查变量是否已存在。这会导致编译器报告未定义标识符错误。
解决这些问题的方法可能包括以下几个步骤:
- 确保
nanosleep
函数正确使用了errno
和EINTR
。 - 将
zbar_mutex_lock
替换为pthread_mutex_lock
。 - 删除
proc->mutex
和proc->nutex
指向的成员,并确保它们存在于proc
结构体中。 - 确保
proc->thr_polling
结构中有正确的字段,例如num
和nun
。 - 确保
proc_cache_polling
函数在复制之前检查其源数据。
如果你正在使用GCC进行交叉编译,可以考虑使用其他工具链(如Clang),因为GCC在ARM平台上的支持有限。此外,确保在构建过程中添加必要的依赖项,如ZBAR库和相关的头文件。
解决 无用评论 打赏 举报 编辑记录-
悬赏问题
- ¥15 征集Python提取PDF文字属性的代码
- ¥15 有偿求苍穹外卖环境配置
- ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
- ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
- ¥15 clousx6整点报时指令怎么写
- ¥30 远程帮我安装软件及库文件
- ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
- ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
- ¥15 Arduino的wifi连接,如何关闭低功耗模式?
- ¥15 Android studio 无法定位adb是什么问题?