尝试安装PyQt5失败

简介:

卡在:编译 qtbase/src/gui/image/qpnghandler.cpp时报错:

.obj/qpnghandler.o: In function `QPngHandlerPrivate::readPngHeader()':
qpnghandler.cpp:(.text+0xbe2): undefined reference to `png_set_longjmp_fn'
.obj/qpnghandler.o: In function `QPNGImageWriter::writeImage(QImage const&, int, QString const&, int, int)':
qpnghandler.cpp:(.text+0x273b): undefined reference to `png_set_longjmp_fn'
.obj/qpnghandler.o: In function `QPngHandlerPrivate::readPngImage(QImage*)':
qpnghandler.cpp:(.text+0x30cc): undefined reference to `png_set_longjmp_fn'
collect2: ld returned 1 exit status

我以为是没有加-lpng库,在Makefile中添加了 -lpng,结果还是没能解决。

打开qtbase/src/gui/image/qpnghandler.cpp文件:


#if PNG_LIBPNG_VER >= 10400 && PNG_LIBPNG_VER <= 10502 \
        && defined(PNG_PEDANTIC_WARNINGS_SUPPORTED)
/*
    Versions 1.4.0 to 1.5.2 of libpng declare png_longjmp_ptr to
    have a noreturn attribute if PNG_PEDANTIC_WARNINGS_SUPPORTED
    is enabled, but most declarations of longjmp in the wild do
    not add this attribute. This causes problems when the png_jmpbuf
    macro expands to calling png_set_longjmp_fn with a mismatched
    longjmp, as compilers such as Clang will treat this as an error.
 
    To work around this we override the png_jmpbuf macro to cast
    longjmp to a png_longjmp_ptr.
*/
#   undef png_jmpbuf
#   ifdef PNG_SETJMP_SUPPORTED
#       define png_jmpbuf(png_ptr) \
            (*png_set_longjmp_fn((png_ptr), (png_longjmp_ptr)longjmp, sizeof(jmp_buf)))
#   else
#       define png_jmpbuf(png_ptr) \
            (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP)
#   endif
#endif

这该怎么处理呀?

如下为调用到 png_jmpbuf 的地方:


    if (setjmp(png_jmpbuf(png_ptr))) {
        png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
        png_ptr = 0;
        amp.deallocate();
        state = Error;
        return false;
    }

目录
相关文章
|
存储 前端开发 JavaScript
如何解决前端常见的竞态问题?
如何解决前端常见的竞态问题?
349 0
|
10月前
|
人工智能 数据可视化 数据处理
从0到1只需“拖一拖”,开发时间按秒算——低代码到底有多牛
低代码平台正颠覆传统软件开发模式,通过可视化开发、模块化组件和自动化工具,将复杂开发过程大大简化。企业能以更低的成本和更快的速度(从数月缩短至几天甚至几小时)将创意转化为数字化产品。低代码平台支持拖拽式操作、实时预览、自动代码生成和快速部署,显著提高开发效率,满足多样化的业务需求。其核心引擎(如SQL引擎、图表引擎等)不断升级,增强数据处理能力和跨平台兼容性。此外,丰富的插件生态和开放架构进一步扩展了平台的适用范围,为企业提供更高效的技术解决方案,推动数字化转型。 未来,低代码将与AI、物联网等技术深度融合,成为企业创新和市场响应的关键驱动力。
信不信?工作这么多年,还有很多网工不知道光模块光衰的正常范围?
信不信?工作这么多年,还有很多网工不知道光模块光衰的正常范围?
1447 2
|
存储 SQL 算法
【OceanBase】惊天大反转!启动时真的会占用95%磁盘空间?别怕!揭秘真相+实用调整技巧,手把手教你如何优雅地管理磁盘空间,让你的数据库从此告别“吃土”模式!
【8月更文挑战第15天】OceanBase是一款高性能分布式数据库,启动时并不会默认占用95%磁盘空间,这是一种误解。其设计注重资源管理,可根据业务需求动态调整空间使用。通过设置`max_disk_usage`等参数、优化表设计、定期清理数据及启用压缩等功能,可有效控制磁盘占用,确保高效利用存储资源。
650 1
|
存储 Kubernetes 容器
在k8S中,CSI模型是什么?
在k8S中,CSI模型是什么?
|
JavaScript 前端开发 API
|
传感器 存储 编解码
51单片机--AD/DA
51单片机--AD/DA
639 0
|
Kubernetes 应用服务中间件 nginx
k8s教程(pod篇)-升级与回滚
k8s教程(pod篇)-升级与回滚
538 1
|
存储 缓存 Linux
Linux内存性能优化总结,让你的系统更加高效!(上)
Linux内存性能优化总结,让你的系统更加高效!
|
存储 API 对象存储
Openstack架构构建及详解(3)--Glance组件
Openstack架构构建及详解(3)--Glance组件
661 0
Openstack架构构建及详解(3)--Glance组件