1

CC 5.10 を使用して Cray x86_64 システムで libpng 1.5.14 をコンパイルしようとしましたが、endif の欠落エラーが頻繁に発生しました。ファイルの末尾に #endif を追加することでこれらのエラーの多くを修正し、「make check」を 3 つのテストの最初のシリーズを超えて続行できるようにしました。ただし、dfn.c には修正できない endif エラーが 1 つあります。dfn.c を hack_dfn.c にコピーし、#endif ステートメントを hack_dfn.c の末尾に追加して、dfn.c が再作成された後に Makefile で hack_dfn.c を dfn.c にコピーすることで、これをハックしようとしましたが成功しませんでした。コンパイルプロセス。以下は、dfn.c ファイルに修正が加えられていない最後の出力であり、私が受け取ったエラーが含まれています。

Running tests.  For details see pngtest-log.txt
Running test-pngtest.sh
  PASS: pngtest --strict pngtest.png
PASS: test-pngtest.sh
Running test-pngvalid-simple.sh
  PASS: pngvalid --standard
  PASS: pngvalid --standard --progressive-read
  PASS: pngvalid --standard --interlace
  PASS: pngvalid --standard --progressive-read --interlace
  PASS: pngvalid --size
  PASS: pngvalid --size --progressive-read
  PASS: pngvalid --transform
PASS: test-pngvalid-simple.sh
Running test-pngvalid-full.sh
  PASS: pngvalid --gamma-threshold
  PASS: pngvalid --gamma-transform
  PASS: pngvalid --gamma-sbit
  PASS: pngvalid --gamma-16-to-8
  PASS: pngvalid --gamma-background
  PASS: pngvalid --gamma-alpha-mode
  PASS: pngvalid --gamma-transform --expand16
  PASS: pngvalid --gamma-background --expand16
  PASS: pngvalid --gamma-alpha-mode --expand16
PASS: test-pngvalid-full.sh
==================
All 3 tests passed
==================
make[1]: Leaving directory `/usr/local/libpng-1.5.14'
rm -f scripts/symbols.out dfn.c dfn?.out
test -d scripts || mkdir scripts
echo '#include "scripts/symbols.dfn"' >dfn.c
cc -E -DHAVE_CONFIG_H -I.  -DPNG_CONFIGURE_LIBPNG\
             -DPNGLIB_LIBNAME='PNG15_0' -DPNGLIB_VERSION='1.5.14' -DSYMBOL_PREFIX='' -DPNG_NO_USE_READ_MACROS -DPNG_BUILDING_SYMBOL_TABLE dfn.c > dfn1.out
PGC-S-0218-Missing #endif (dfn.c: 2)
PGC/x86-64 Linux 12.4-0: compilation completed with severe errors
make: *** [scripts/symbols.out] Error 2

3282 の if[n]def ステートメントを実行して、それぞれが閉じていることを確認する時間がありません。ここにいる誰かが、私よりも libpng の知識が豊富で、少なくとも私が探し始めることができる場所を教えてくれることを願っています。奇妙なことに、この同じバージョンの libpng を別のシステムで gcc を使用して問題なくコンパイルできました。このシステムで gcc を使用しないようにしたいと考えています。

4

1 に答える 1

1

#endif ステートメントにコメントがあると、C プリプロセッサが混乱する可能性があります。たとえば、

  #endif /* PNG_READ_SUPPORTED */
于 2013-02-01T05:16:38.713 に答える