• 締切済み

C言語プログラムのコンパイルエラーについて

お世話になります。 既存のC言語プログラムの一部を修正し、makefileを使用してコンパイルを行ったのですが、 以下のエラーメッセージが出てしまい、コンパイルすることができません。 自分なりに調べてみましたが、解決策が見つかりませんでした。 対応方法ご存知の方、もしくは、参考になる情報お持ちの方、助けて頂けると幸いです。  メッセージ : /usr/bin/ld: cannot find -lsendmail OSはCentOS 5.5です。 sendmail関係のインストールは行っています。 C言語の開発経験が乏しく、困っています。 お手数をお掛けして申し訳ありませんが、ご協力をお願い致します。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

>ただ、コンパイルを行っているのは、事情により元々コンパイルした環境とは >別の環境で行っています。 元々の環境を調べてlibsendmail.so(もしくは libsendmail.a)が何でインストールされるものか調べてみてください。 CentOS 5.10をインストールして調べてみましたがsendmailやsendmail-develをインストールしてもlibsendmail.soはインストールされなかったので何か別のものでインストールされたものだと思います。 最悪、元々の環境でもコンパイルできてなかった可能性もありえるかもしれませんが。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

libsendmail.so もしくは libsendmail.a が見つからないという事になるんですが、 もしかしてMakefileに手を加えて -lsendmail など書き加えました? 私が知らないだけかもしれませんが sendmail をインストールしても libsendmail.so, libsendmail.a は存在しないと思うのですが。 >対応方法ご存知の方、もしくは、参考になる情報お持ちの方、助けて頂けると幸いです。 的確な回答を得たいのでしたら、どの様な変更をされたのか、どうコンパイルしようとしたのかとそのログくらいは書かれた方がいいですよ。

hyskoa466dt
質問者

お礼

回答頂き、ありがとうございました。 情報が少なくて、申し訳ありません。 プログラム変更した内容は、PostgresqlテーブルのSELECT文のwhere句に 条件文を1行追加しただけですので、sendmailとは関係ない部分です。 makefileは既存のものに対して変更を行っていません。 ただ、コンパイルを行っているのは、事情により元々コンパイルした環境とは 別の環境で行っています。 コンパイルを行っているcentosにはyumでgcc、sendmailをインストールしました。 makefileは以下のように記述されています。 もし何かわかることあればご教授ください。 よろしくお願い致します。 TARGET = test_prg CC = gcc RM = rm -vf .SUFFIXES : .o .c .h # -------------------------------------------------------------------------- # source files # -------------------------------------------------------------------------- SRCS = $(shell ls *.c) OBJS = ${SRCS:.c=.o} # -------------------------------------------------------------------------- # CC -c # -------------------------------------------------------------------------- CFLAGS = -Wall -g -O0 INC = -I/usr/include/pgsql/server # -------------------------------------------------------------------------- # CC -o # -------------------------------------------------------------------------- LIB = -lpthread -lpq -lsendmail LIBINC = -L./ # -------------------------------------------------------------------------- # rules # -------------------------------------------------------------------------- all : dep ${OBJS} ${TARGET} # ------- link ------- ${TARGET} : ${CC} -o $@ ${OBJS} ${CFLAGS} ${LIBINC} ${LIB} # ------- compile ------- .c.o : ${CC} ${CFLAGS} ${INC} -c $< # ------- dependent ------- dep : ${CC} -M ${CFLAGS} ${INC} ${SRCS} > makefile.dep clean : ${RM} ${OBJS} ${RM} makefile.dep ${RM} ${TARGET}

  • maze1230
  • ベストアンサー率0% (0/0)
回答No.1

makefileのコンパイル部分に-lsendmailを加えれば大丈夫だと思います

hyskoa466dt
質問者

お礼

回答頂き、ありがとうございました。 情報が少なくて、申し訳ありません。 プログラム変更した内容は、PostgresqlテーブルのSELECT文のwhere句に 条件文を1行追加しただけですので、sendmailとは関係ない部分です。 makefileは既存のものに対して変更を行っていません。 ただ、コンパイルを行っているのは、事情により元々コンパイルした環境とは 別の環境で行っています。 コンパイルを行っているcentosにはyumでgcc、sendmailをインストールしました。 makefileは以下のように記述されています。 もし何かわかることあればご教授ください。 よろしくお願い致します。 TARGET = test_prg CC = gcc RM = rm -vf .SUFFIXES : .o .c .h # -------------------------------------------------------------------------- # source files # -------------------------------------------------------------------------- SRCS = $(shell ls *.c) OBJS = ${SRCS:.c=.o} # -------------------------------------------------------------------------- # CC -c # -------------------------------------------------------------------------- CFLAGS = -Wall -g -O0 INC = -I/usr/include/pgsql/server # -------------------------------------------------------------------------- # CC -o # -------------------------------------------------------------------------- LIB = -lpthread -lpq -lsendmail LIBINC = -L./ # -------------------------------------------------------------------------- # rules # -------------------------------------------------------------------------- all : dep ${OBJS} ${TARGET} # ------- link ------- ${TARGET} : ${CC} -o $@ ${OBJS} ${CFLAGS} ${LIBINC} ${LIB} # ------- compile ------- .c.o : ${CC} ${CFLAGS} ${INC} -c $< # ------- dependent ------- dep : ${CC} -M ${CFLAGS} ${INC} ${SRCS} > makefile.dep clean : ${RM} ${OBJS} ${RM} makefile.dep ${RM} ${TARGET}

関連するQ&A