dポイントプレゼントキャンペーン実施中!

お世話になります。

既存のC言語プログラムの一部を修正し、makefileを使用してコンパイルを行ったのですが、
以下のエラーメッセージが出てしまい、コンパイルすることができません。
自分なりに調べてみましたが、解決策が見つかりませんでした。
対応方法ご存知の方、もしくは、参考になる情報お持ちの方、助けて頂けると幸いです。

 メッセージ : /usr/bin/ld: cannot find -lsendmail

OSはCentOS 5.5です。
sendmail関係のインストールは行っています。
C言語の開発経験が乏しく、困っています。
お手数をお掛けして申し訳ありませんが、ご協力をお願い致します。

A 回答 (3件)

>ただ、コンパイルを行っているのは、事情により元々コンパイルした環境とは


>別の環境で行っています。

元々の環境を調べてlibsendmail.so(もしくは libsendmail.a)が何でインストールされるものか調べてみてください。
CentOS 5.10をインストールして調べてみましたがsendmailやsendmail-develをインストールしてもlibsendmail.soはインストールされなかったので何か別のものでインストールされたものだと思います。

最悪、元々の環境でもコンパイルできてなかった可能性もありえるかもしれませんが。
    • good
    • 0

libsendmail.so もしくは libsendmail.a が見つからないという事になるんですが、


もしかしてMakefileに手を加えて -lsendmail など書き加えました?
私が知らないだけかもしれませんが sendmail をインストールしても libsendmail.so, libsendmail.a は存在しないと思うのですが。

>対応方法ご存知の方、もしくは、参考になる情報お持ちの方、助けて頂けると幸いです。

的確な回答を得たいのでしたら、どの様な変更をされたのか、どうコンパイルしようとしたのかとそのログくらいは書かれた方がいいですよ。
    • good
    • 0
この回答へのお礼

回答頂き、ありがとうございました。
情報が少なくて、申し訳ありません。
プログラム変更した内容は、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}

お礼日時:2013/12/15 15:58

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

    • good
    • 0
この回答へのお礼

回答頂き、ありがとうございました。
情報が少なくて、申し訳ありません。
プログラム変更した内容は、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}

お礼日時:2013/12/15 15:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!