私はZedShawのLearnCを使ってCプログラミングを難しい方法で学ぼうとしています。私は、ソフトウェアのインストールに使用するプログラム「devpkg」を作成するex26に取り組んでいます。この演習では、ApachePortableRuntimeライブラリをインストールする必要があります。この演習のコードを記述した後、次のmakefileを使用してプログラムをコンパイルできませんでした。
PREFIX?=/user/local
CFLAGS=-g -Wall -I${PREFIX}/apr/include/apr-1 -I{PREFIX}/apr/include/apr-util-1
LDFLAGS=-L${PREFIX}/apr/lib -lapr-1 -pthread -laprutil-1
all: devpkg
install: all
install -d${DESTDIR}/${PREFIX}/bin/
install devpkg ${DESTDIR}/${PREFIX}/bin/
clean:
rm -f *.o
rm -f devpkg
rm -f *.dSYM
「$makedevpkg」を使用したとき、すべてのAPRライブラリ関数が宣言されていなかったため、このmakefileは機能していないようでした。ちなみに、私はこれをUbuntu仮想マシンで実行しています。本文に記載されている解決策は、構成ファイルを変更してから「ldconfigを実行」して、リンカが適切なライブラリを見つけられるようにすることです。
関数を正しく利用するために、ldconfigのマニュアルページを十分に理解していません。ldconfigを正しく実行するにはどうすればよいですか?
また、いくつか掘り下げた後、makefileで「LDFLAGS」の代わりに「LDLIBS」を使用すると問題が修正されたという参照を見つけました。makefileを変更し、プログラムをコンパイルしました。
CコンパイラがAPRライブラリに正しくリンクできるようにした「LDFLAGS」と「LDLIBS」の違いは何ですか?makefileが正しく生成される方法をよりよく理解するのに役立つコマンドの便利なリストがどこかにありますか?
御時間ありがとうございます。