【问题标题】:LibPNG building issue on Windows 10Windows 10 上的 LibPNG 构建问题
【发布时间】:2020-04-20 04:10:52
【问题描述】:

我试图在 Windows 10 上构建 libpng 以获取 win32 二进制文件,但我认为存在与 awk 解析具有 CRLF 行结尾的文件相关的问题。我尝试使用 dos2unix 命令转换文件,但没有成功,结果相同 - 在 make 命令上我得到下一个输出:

sh-3.1$ make
rm -f pnglibconf.c pnglibconf.tf[45]
gawk -f ./scripts/options.awk out=pnglibconf.tf4 version=search\
            ./pngconf.h ./scripts/pnglibconf.dfa\
            ./pngusr.dfa  1>&2
gawk -f ./scripts/options.awk out=pnglibconf.tf5 pnglibconf.tf4 1>&2
options.awk: bad line (10): com
make: *** [pnglibconf.c] Error 1

编译器是MinGW with MSYS v1.0 on WIndows 10 x86,libpng版本是1637。如何解决这个问题?

更新:通过下载 tar.gz 存档解决,但有新问题

sh-3.1$ make                                                                                                            make  all-am                                                                                                            make[1]: Entering directory `/c/Users/user/Downloads/libpng-1.6.37.tar/libpng-1.6.37'                                   depbase=`echo contrib/tools/pngfix.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\                                                      gcc -DHAVE_CONFIG_H -I.     -g -O2 -MT contrib/tools/pngfix.o -MD -MP -MF $depbase.Tpo -c -o contrib/tools/pngfix.o contrib/tools/pngfix.c &&\                                                                                                  mv -f $depbase.Tpo $depbase.Po                                                                                  In file included from contrib/tools/../../png.h:330,
                 from contrib/tools/pngfix.c:44:
contrib/tools/../../pnglibconf.h:206:54: error: expected identifier or '(' before '-' token
 #define PNG_TEXT_Z_DEFAULT_STRATEGY                                                   0
                                                      ^
In file included from contrib/tools/../../png.h:335,
                 from contrib/tools/pngfix.c:44:
contrib/tools/../../pngconf.h:524:9: error: unknown type name 'ptrdiff_t'
 typedef ptrdiff_t png_ptrdiff_t;
         ^~~~~~~~~
make[1]: *** [contrib/tools/pngfix.o] Error 1                                                                           make[1]: Leaving directory `/c/Users/user/Downloads/libpng-1.6.37.tar/libpng-1.6.37'                                    make: *** [all] Error 2

经过实验验证,Linux上不会出现此问题。

【问题讨论】:

  • 为什么你认为这是一个行尾问题?该脚本的第 10 行是什么?
  • 如果是行尾问题,为什么要dos2unix 而不是unix2dos,考虑到您在Windows 上?
  • 我想,因为 linux 采用的编译器实用程序和许多源代码已经包含 CRLF。在github上的一些讨论中,对行尾做出了这样的假设。

标签: windows awk libpng building


【解决方案1】:

我的解决方案是将 scripts/pnglibconf.dfa 上的换行符从 CRLF 更改为 LF。

【讨论】:

    【解决方案2】:

    解决了。总结:使用 tar.gz 或 xz 压缩包和 unix LF,并编辑编译过程中生成的 pnglibconf.h,这样就没有换行符。

    【讨论】:

      猜你喜欢
      • 2011-01-10
      • 2021-08-05
      • 2021-01-23
      • 2019-02-16
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      相关资源
      最近更新 更多