libpng causes error concerning pngconf.h

本文记录了在不同版本的Ubuntu中使用libpng时遇到的编译错误,并提供了一个简单的解决方案,即通过应用Gentoo社区提供的补丁来解决与pngconf.h文件相关的错误。

Bug Description

Ubuntu Gutsy Gibbon 7.10 - libpng 1.2.15~beta5-2ubuntu0.1 (bug probably concerned with libpng-dev)

Ubuntu Hardy Heron 8.04 (current dev version) - libpng 1.2.15~beta5-3 (bug probably concerned with libpng-dev)

-

Compiling svn rev 2400 of FIFEngine (http://fifengine.de) via scons.

Building is terminated because of errors:

/usr/include/pngconf.h:317: error: expected constructor, destructor, or type conversion before '.' token
/usr/include/pngconf.h:318: error: '__dont__' does not name a type

-

Commenting out the lines mentioned above in pngconf.h will solve the problem in this case.

 
 
 
dauerflucher (dauerflucher) wrote on 2008-04-30:#1

Gentoo devs offer a patch for this problem.

--- libpng/pngconf.h
+++ libpng/pngconf.h
@@ -323,8 +323,8 @@
      /* If you encounter a compiler error here, see the explanation
       * near the end of INSTALL.
       */
- __pngconf.h__ already includes setjmp.h;
- __dont__ include it again.;
+#warning __pngconf.h__ already includes setjmp.h;
+#warning __dont__ include it again.;
 # endif
 # endif /* __linux__ */

Patch taken from:
http://mirrors.usc.edu/pub/linux/distributions/gentoo/media-libs/libpng/files/libpng-1.2.24-pngconf-setjmp.patch

Bart de Koning (bratdaking) wrote on 2008-10-27:#2

I could confirm this in Ubuntu 8.04 using libpng12-dev 1.2.15~beta5-3

I could solve it using the above mentioned patch from Gentoo

Bart de Koning (bratdaking) wrote on 2008-11-14:#3

Hey all,

Ubuntu Intrepid Ibex 8.10 - libpng12-dev 1.2.27-1
has the same problem:
compiling imal (http://brneurosci.org/imal.html) using dpkg-buildpackage -rfakeroot gives the following error and exits:

---
In file included from /usr/include/png.h:438,
                 from xmtnimage65.cc:17:
/usr/include/pngconf.h:326: fout: expected constructor, destructor, or type conversion before ‘.’ token
/usr/include/pngconf.h:327: fout: ‘__dont__’ does not name a type
make[1]: *** [xmtnimage65.o] Fout 1
make: *** [build-stamp] Fout 2
dpkg-buildpackage: failure: debian/rules build gave error exit status 2
---

Changing /usr/include/pngconf.h according to the patch described above, solves the problem like it did in Hardy.
Could this be implemented upstream, or is there a good reason not to do so?

Cheers,
Bart

Daniel T Chen (crimsun) wrote on 2008-12-14:#4

Arguably the applications should be using the correct interfaces...

Changed in libpng:
importance:Undecided → Wishlist
status:New → Confirmed
Christoph Egger (christoph-egger) wrote on 2009-05-16:#5

If this is using the wrong interfaces libpng *may* fail with an #error directive. Failing because someone believes putting invalid code somewhere is funny is definitely a bug.

cousteau (cousteaulecommandant) wrote on 2009-12-25:#6

2009-12-25 and the bug's still there. And although I browsed all the code I was trying to compile searching for "#include <setjmp.h>" I didn't found it, so I don't know why the error even appears.

Commenting those 2 lines on /usr/include/pngconf.h works, and the compiled program works perfectly after that.

(Ubuntu 9.04, it seems to also be in 9.10)

Siegfried Gevatter (rainct) wrote on 2010-03-04:#7

This is still present in Lucid (1.2.42-1ubuntu1).

Amir (aameli8)  on 2010-03-22
description:updated
summary:- libpng causes error concerning pngconf.h
+ Installing problem under ubuntu 9.10
description:updated

Aehm what exactly was that supposed to be?

Bluppie (benhyper) wrote on 2010-06-20:#9

In Ubuntu 10.04 no problems with Calibre 0.7.4.
Look on the link for details.
http://calibre-ebook.com/download_linux

Ryan Steele (rgsteele)  on 2010-06-26
description:updated
summary:- Installing problem under ubuntu 9.10
+ libpng causes error concerning pngconf.h
Meekohi (meekohi) wrote on 2012-06-06:#10

Just experienced this on Amazon AMI.

Meekohi (meekohi) wrote on 2012-06-06:#11

Fixed by putting #include "png.h" at the top of my program instead of letting it be included later.

michael (reeves-87) wrote on 2012-06-25:#12

Invalid code is still present as of 12.04. Header should be fixed to use #error or #warning.

Vistaus (djmusic121) wrote on 2012-07-30:#13

Why isn't any dev fixing this? It's such an easy-to-apply patch and this bug is open for so many years already!!!

Marc Deslauriers (mdeslaur) wrote on 2012-07-30:#14

It's not being fixed because the upstream libpng project put that there deliberately.

Once you make sure your project is using the same setjmp.h, in lucid and later, you simply need to set PNG_SKIP_SETJMP_CHECK in your application to skip the error.

If you disagree, please debate this issue with the upstream libpng project.

Changed in libpng (Ubuntu):
status:Confirmed → Opinion

转载于:https://www.cnblogs.com/mfryf/p/3818888.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值