[sylpheed-jp:11131] Re: sylpheed のビルド中意図しないヘッダファイルがインクルードされてコンパイルが失敗する

Hiroyuki Yamamoto hiro-y @ kcn.ne.jp
2011年 8月 23日 (火) 15:51:41 JST


山本です。

On Wed, 17 Aug 2011 14:07:05 +0900
"KISHIMOTO, Makoto" <ksmakoto @ dd.iij4u.or.jp> wrote:

> きしもとと申します
> 
> 手元の FreeBSD 環境 (Heimdal (Kerberos 5 の実装のひとつ) がインストール
> されています) で、ports の sylpheed-3.1.1 をビルドすると、以下のように
> コンパイルが失敗します(途中、長い行を継続にしています)。

(snip)

> 原因は、Heimdal をインストールすると作られる
> /usr/local/include/base64.h が存在するために、意図しない形でそちらが
> インクルードされてしまっているためです。
> 
> 一時的に /usr/local/include/base64.h をリネームするなどするか、以下の
> パッチでインクルードファイルの探索順を変えて、回避して無事ビルド
> できました。しかし(続く)
> 
> $ cat files/patch-src-Makefile.in
> --- src/Makefile.in.ORG 2011-08-17 13:13:09.000000000 +0900
> +++ src/Makefile.in     2011-08-17 13:13:29.000000000 +0900
> @@ -345,11 +345,11 @@
> 
>  INCLUDES = \
>         -DG_LOG_DOMAIN=\"Sylpheed\" \
> +       -I$(top_srcdir)/libsylph \
>         $(GTK_CFLAGS) \
>         $(GDK_PIXBUF_CFLAGS) \
>         $(GPGME_CFLAGS) \
> -       -I$(includedir) \
> -       -I$(top_srcdir)/libsylph
> +       -I$(includedir)
> 
>  @NATIVE_WIN32_FALSE @ SYLPHEED_RES =
> 
> (続き)しかし、この Makefile の修正による回避が適切なものか、私には判断
> できません。また、調べてみたところ Fedora のパッケージでは、基本的に
> /usr/local ではなく /usr 直下にインストールするためか、
> /usr/include/ライブラリ名/なんとか.h という形でヘッダファイルは
> インストールするようになっており、このような事故は起きにくいように
> なっていました。そのように、ヘッダファイルのインストール側で解決する
> ほうがいいのかもしれません。

base64.h というファイル名がありがちなので、インクルード順の
変更だけでは不確実だと思われます。

ファイル自体は $(top_builddir)/libsylph/base64.h にあるので、
src/*.c のインクルードする側を

#include "libsylph/base64.h"

と書き換えてしまうのが確実ではないでしょうか。

手元の Ubuntu 環境で /usr/local/include/base64.h を置いてもなぜか
優先してくれず確認できていないので、上記修正で回避できるか
ご確認いただけますでしょうか。

-- 
Hiroyuki Yamamoto <hiro-y @ kcn.ne.jp>


Sylpheed-jp メーリングリストの案内