私は、すべてのプログラミング例を実行して、Head First C に取り組んでいます。第 8 章は静的リンクから始まります。次の 4 つのコマンド (Cygwin) を使用します。
gcc -I./includes -c hfcal.c -o hfcal.o
gcc -I./includes -c elliptical.c -o elliptical.o
ar -rcs ./libs/libhfcal.a hfcal.o
gcc elliptical.o -L./libs -lhfcal -o elliptical
正しく入力したと仮定すると、エリプティカル マシンで消費されたカロリーを示す数行が出力されます。
次に、動的リンクを紹介します。それは本の中で最も明確な章ではなく、私はまだ少しあいまいです. さらに複雑なのは、新しいコードにタイプミスがあるかどうかわからないという事実です。テキストは、コードが以前と同じであると述べていますが、スラッシュの前のドットを省略し、1 つのケースではインクルードの末尾の s を省略しています。ドットを元に戻し、変更する必要があると言った部分だけを変更しました。(私は彼らの正誤表ページに行きましたが、関連するものは何もありませんでした。) 新しいコードは次のとおりです。
gcc -I./includes -fPIC -c hfcal.c -o hfcal.o //Got a warning, fPIC ignored, as book predicted
gcc -shared hfcal.o -o ./libs/libhfcal.dll
gcc -I./includes -c elliptical.c -o elliptical.o
gcc elliptical.o -L./libs -lhfcal -o elliptical
無視され-fPIC
た行と 2 行目を除いて、これらは最初のケースと同じコマンドですが、順序が少し異なります。
./elliptical を正常に実行した後、実際に別のディレクトリを使用することになっていたのか、ドットが抜けているのは意図的なものなのか疑問に思いました。アーカイブ .a ファイルを rm したことはなく、新しい dll ファイルと同じディレクトリにありました。libhfcal.a と libhfcal.dll のどちらを使用するか、コンパイラーはどのように判断するのでしょうか。順番のせい?
より明確な説明、特に試すことができるコードを読むことができる良いリソースはありますか?