- PR -

Fedora Core 3 にてtcpserverを組み込みたい

1
投稿者投稿内容
hisoka
常連さん
会議室デビュー日: 2004/11/30
投稿数: 25
お住まい・勤務地: 関西
投稿日時: 2005-04-15 15:17
いつもお世話になり恐縮です。

今回Fedora Core 3にqmailを立ち上げようとしています。
qmailのmakeなどはうまくいき、SMTPの受付制限DBを作成
しようとtcpserverを入れる段階でつまづいています。
ucspi-tcp-0.88を展開し、ucspi-tcp-0.88.a_record.patchを
組み込みmakeするとコンパイルエラー(だと思う)がでます

alloc.c:3: ■■: conflicting types for built-in function 'malloc'

tcpserver.o(.text+0x800) In function 'doit'
: undefined reference to 'errno'
等がでます。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=10&topic=13065
と同じかと思ったのですが、参考Urlがqmailのエラーのようで・・・

どなたか同じような問題をクリアした方、
またはアドバイスいただける方、よろしくお願いします。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-15 15:44
errno に関する問題点としては全く同じかと思います。

djb氏のソフトのC言語ソースでは、errno を、外部定義してあるグローバル変数と決め打って extern しているのですが、最近の glibc では、errno は変数ではなくマクロとして定義されているので、食い違いが出ているようです。

ですので、次のように、errno.h をインクルードするよう、書き換えを行えば良いです。

・BEFORE: extern int errno;
・AFTER : #include <errno.h>

どこかでパッチが公開されているとは思うのですが、修正自体は単純なので、手作業でも苦にはならないと思います。
(grep で探せば、対象ファイルもすぐ見つかります)

なお、malloc に関しては警告レベルなので、そのままでもコンパイルは通ると思います。
…が、気持ち悪いところではあるので、次のように修正すると良いかと思います。

・BEFORE: extern char *malloc();
      extern void free();
・AFTER : #include <stdlib.h>

以上、ご参考まで。

[ メッセージ編集済み 編集者: angel 編集日時 2005-04-15 15:53 ]
hisoka
常連さん
会議室デビュー日: 2004/11/30
投稿数: 25
お住まい・勤務地: 関西
投稿日時: 2005-04-15 16:01
ありがとうございました。

指示通り実施したらエラー無く組み込まれました。
これで先に進むことができます。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)