在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_64CPPFLAGS=-I/usr/local/openssl-1.1.0j/include -I/usr/local/gmp-6.1.2/include -I/usr/local/readline-8.1/includeLDFLAGS= -mmacosx-version-min=10.7LIBPNG=/usr/local/libpng-1.6.15ZLIB=/usr/local/zlib-1.2.11LIBJPEG=/usr/local/libjpeg-9cXCODE=/Applications/Xcode-4.6.2.app/Contents/Developer(~/.bash_profile中配置了PATH=$XCODE/usr/bin:$PATH)
内容的提问来源于stack exchange,提问作者Lars Malmsteen
相关产品推荐
相关产品推荐

