You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在macOS 10.7.5编译NCSA Mosaic-2.7 CK 13遇sizeof相关编译错误

编译NCSA Mosaic-2.7 CK 13 32位版本时的libpng相关错误解决

我在Mac mini(运行macOS 10.7.5 Lion)上尝试编译32位版本的NCSA Mosaic-2.7 CK 13。该软件兼容OpenMotif 2.1.31的32位二进制文件安装为/Applications/Mosaic-CK.app后,在Lion上运行正常,因此我认为本地编译应当可行。

按照INSTALL文件或相关简化说明执行make osx时,编译大量源文件(如HTFile.c、HTFormat.c等)约一分钟后,在/src/readPNG.c处停止并报错:

readPNG.c: In function ‘ReadPNG’:
readPNG.c:136:42: error: invalid application of ‘sizeof’ to incomplete type ‘png_info {aka struct png_info_def}’
     info_ptr = (png_info *)malloc(sizeof(png_info));
                                          ^
readPNG.c:143:23: error: dereferencing pointer to incomplete type ‘png_struct {aka struct png_struct_def}’
     if (setjmp(png_ptr->jmpbuf)) {  

我推测问题可能源于Lion上的libpng安装方式:我的libpng安装在独立目录/usr/local/libpng-1.6.15,未合并到/usr/local/lib和/usr/local/include中。INSTALL文件中make osx部分说明:

将libz、libpng和libjpeg安装到/usr/local(/lib),需使用.a静态库,而非动态/共享库!如果没有这些库,请自行编译!

若此为编译问题根源,如何让/usr/local/libpng-1.6.15兼容/usr/local(/lib)?若不是,该如何解决“invalid application of ‘sizeof’ to incomplete type”错误?

我的系统及相关环境变量如下:

  • 运行环境:Mac mini + Mac OS X 10.7.5 Lion
  • 未安装Homebrew
  • 不存在/opt目录
  • 所有软件包均安装在/usr/local下各自独立的文件夹中
  • GCC=/usr/local/gcc-5.0.0(同时存在GCC-4.6、3.3和10.0,尝试过用它们编译,问题未改变)
  • CFLAGS=-Wall -arch x86_64
  • CPPFLAGS=-I/usr/local/openssl-1.1.0j/include -I/usr/local/gmp-6.1.2/include -I/usr/local/readline-8.1/include
  • LDFLAGS= -mmacosx-version-min=10.7
  • LIBPNG=/usr/local/libpng-1.6.15
  • ZLIB=/usr/local/zlib-1.2.11
  • LIBJPEG=/usr/local/libjpeg-9c
  • XCODE=/Applications/Xcode-4.6.2.app/Contents/Developer(~/.bash_profile中配置了PATH=$XCODE/usr/bin:$PATH)

内容的提问来源于stack exchange,提问作者Lars Malmsteen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 10:20:31