これは少し恥ずかしいです。何が起こっているのかはわかっていますが、理由はわかりません。「未定義の参照先」エラーが発生します。これは、リンカー(ld)が作成したライブラリのコードを配置していないことを意味します。
私は現在、ZedA.Shawの「LearnCtheHardWay」コースをいじっています。演習32を終了しようとしていますが、同じエラーが発生し続けます。
この本では、次のコマンドを実行するmakeファイルを開発します。
cc -g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG build/liblcthw.a \
tests/list_tests.c -o tests/list_tests
ここで、-gはデバッグ情報を有効にする、-Wallは「すべての」警告を有効にする、-Wextraはさらに警告を有効にする、-Isrcはライブラリディレクトリにsrcディレクトリを含める、-o tests/list_testsはそれを使用して出力を生成するそのディレクトリに名前を付け、コードから変数を有効にするための-DNDEBUG、レベル2の最適化のための-O2(それが意味するものは何でも)、そのライブラリ(ビルドを取得しているライブラリ)を含めるためのbuild/liblcthw.a。残りは彼らが何をしているのか分かりません。
正しく理解できれば、srcディレクトリにオブジェクトlist.oを作成するlist.cがあります。このオブジェクトは、後でarとranlibを介してlibに含まれます。したがって、ヘッダーlist.hを呼び出すと、ldがbuild/liblcthw.aでlist.oを検索するようになります。ldは、何らかの理由でbuild/liblcthw.aを読み取っていません。だから私はこの未定義のエラーへの参照を取得します。
私はゼッドに連絡しようとしましたが、彼はどうやら忙しい人です。だから私はここで助けを得たいと思っています。問題についてさらに情報を追加する必要があるかどうか教えてください。これまでのライブラリ全体へのリンクは次のとおりです。
誰かが私を助けてくれることを願っています。