ラベル jpeg-8cビルドの件 の投稿を表示しています。 すべての投稿を表示
ラベル jpeg-8cビルドの件 の投稿を表示しています。 すべての投稿を表示

2011年7月20日水曜日

_impure_ptr

問題:
CCLD   libjpeg.la
Creating library file: .libs/libjpeg.dll.a
.libs/jerror.o: In function `output_message':
C:\msys\1.0\home\KU\jpeg-8c/jerror.c:111: undefined reference to `_impure_ptr'
collect2: ld returned 1 exit status
考察:
  • C:\MinGW\include\stdio.h
    #define stderr (_impure_ptr->_stderr)
  • cygwinのstdio.hが混入したことによるエラー発生の可能性が高いです。
対策:
  • mingwrt-3.18-mingw32-dev.tar.gzで上書きする。

jpeg_suppress_tables

問題:
CC     jcapimin.lo
jcapimin.c:127:1: error: conflicting types for 'jpeg_suppress_tables'
jcapimin.c:128:1: note: an argument type that has a default promotion can't match an empty parameter name list declaration
jpeglib.h:984:14: note: previous declaration of 'jpeg_suppress_tables' was here
考察:
  • autoheaderを使うと出なくなりました。詳しくはこちらの記事をご覧ください。

  • jconfig.h中の、これがダメ
    #undef HAVE_PROTOTYPES
  • configureのバグか、jconfig.cfgのバグか、折角configureして出来たconfdefs.hの内容が反映されないのが原因かなと考えられます。
  • autoconfを使ってconfigureを作り直したら出なくなりました。但し、作り直す方法にクセが有ります。
    詳しくは
    こちらの記事をご覧ください。
対策:
  • configureの前に、autoheaderを実行します。

  • config.logのケツの方に在るconfdefs.hとやらの定義を自分で、自動生成された後のjconfig.hの後ろに貼り付けてあげる。
## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
//#define PACKAGE_NAME "libjpeg"
//#define PACKAGE_TARNAME "libjpeg"
//#define PACKAGE_VERSION "8.3.0"
//#define PACKAGE_STRING "libjpeg 8.3.0"
//#define PACKAGE_BUGREPORT ""
//#define PACKAGE_URL ""
//#define PACKAGE "libjpeg"
//#define VERSION "8.3.0"
#define PROTOTYPES 1
#define __PROTOTYPES 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_UNISTD_H 1
#define HAVE_STRING_H 1
#define HAVE_PROTOTYPES 1
#define HAVE_STDDEF_H 1
#define HAVE_STDLIB_H 1
#define HAVE_LOCALE_H 1
#define HAVE_UNSIGNED_CHAR 1
#define HAVE_UNSIGNED_SHORT 1
#define INLINE __inline__
#define HAVE_DLFCN_H 1
#define LT_OBJDIR ".libs/"
  • PACKAGE_NAME等の定義は外しておく。他のパッケージと混ぜる時に問題となるので。