Last Update: 2009-11-10 (火) 22:01:10 (5450d)
FrontPage / IRC / FreeBSD環境でircd2.11.0コンパイル失敗する

FreeBSD 7.X で ircd2.11.0 をコンパイルに失敗する

今回実験した環境は

$ uname -a
FreeBSD * 7.1-RELEASE FreeBSD 7.1-RELEASE #5: Tue Jan  6 02:28:50 JST 2009

ちょっと古いircdだが、ircd2.11.0+jp8.tgzを使った際、makeできない問題があった。同様に、ircd2.11.1p0 でも同様の問題が確認されている。

gcc  -o ircd bsd.o dbuf.o packet.o send.o match.o parse.o  support.o version.o channel.o \
 class.o hash.o ircd.o list.o res.o s_auth.o  s_bsd.o s_conf.o s_debug.o s_err.o s_id.o \
 s_misc.o s_numeric.o  s_send.o s_serv.o s_service.o s_user.o s_zip.o whowas.o  res_init.o \
 res_comp.o res_mkquery.o -lz  -lcrypt
hash.o(.text+0x10cc): In function `bigger_prime':
../ircd/hash.c:219: undefined reference to `sqrt'
ircd.o(.text+0x4e9): In function `calculate_preference':
../ircd/ircd.c:388: undefined reference to `pow'
s_bsd.o(.text+0x2791): In function `read_message':
../ircd/s_bsd.c:3237: undefined reference to `pow'

原因は、解決方法としては、libm が足りないため、Makefileに追加する。
FreeBSD6.4 までは問題が出ていないが、FreeBSD7.X以降でこの問題が出るようになっているため、どこかの仕様変更があったのではないかと思われる。

*** Makefile.orig     2009-01-14 13:13:28.000000000 +0900
--- Makefile   2009-01-14 13:14:07.000000000 +0900
***************
*** 42,48 ****
  LDFLAGS =
  # required libraries, except zlib
  LIBS = -lcrypt
! MATHLIBS =
  # zlib, eventually
  ZLIBS = -lz
  # for DSM support (dlopen(), dlsym(), dlclose())
--- 42,48 ----
  LDFLAGS =
  # required libraries, except zlib
  LIBS = -lcrypt
! MATHLIBS = -lm
  # zlib, eventually
  ZLIBS = -lz
  # for DSM support (dlopen(), dlsym(), dlclose())

とすればよい。この辺についての詳細は、man pow を参照されたし。

尚、ircd2.11.1 以降では修正されていた。

関連サイト

コメント


TOPページへ戻るページの更新   ページの編集新しいページの作成新しい下位ページの作成そのページを引用して新規作成そのページにファイルの添付ページの削除ページ名の変更前回の編集内容の表示ページの凍結バックアップページの参照ページへのリンク元を表示   サイトのページ一覧サイト内単語検索編集したページの履歴削除したページの履歴   別ウィンドウでマニュアルページへ