序文 Linux では、コンパイルとリンクには Makefile を使用する必要がありますが、適切な Makefile を書くのは簡単ではなく、標準の Makefile を書くのはさらに面倒です。 autoconf を使用して Makefile を生成すると、特に大規模なプロジェクトでは多くのトラブルを回避できます。 ここでは、プロジェクトを使用してその方法を説明します。一部の手順は必須ではありませんが、どの手順が必須でないかわからない場合は、一部の手順が省略されており、それに応じてコードも変更する必要があるため (パスの変更など)、手順を 1 つ 1 つ実行することをお勧めします。 ステップ まずautoconfをインストールする
新しいプロジェクトフォルダを作成します(例:joy) プロジェクトのライブラリ ファイルとソース ファイルを保存するために、 lib と src という 2 つの新しいフォルダーを作成します。 次の図に示すように: lib フォルダに入り、haha.h などの新しいヘッダー ファイルを作成し、ランダムに関数を宣言します。 //ははは.h #include <stdio.h> void printhaha(); src フォルダーに入り、haha.c などの新しい C ファイルを作成してヘッダー ファイルの関数を実装し、main_code.c などの新しい C ファイルを作成してメイン関数を記述します。 //ははは.c #include "../lib/haha.h" void printhaha() { printf("はは\n"); } //メインコード.c #include "../lib/haha.h" void main() { printhaha(); } Joyフォルダに戻ると、プロジェクトファイルが書き込まれています
autoscan を実行して configure.scan を生成します
configure.scanを編集する
編集前のファイルは次のようになります #元のファイルを編集する# -*- Autoconf -*- # このファイルを autoconf で処理して configure スクリプトを生成します。 AC_PREREQ([2.69]) AC_INIT([フルパッケージ名], [バージョン], [バグレポートアドレス]) AC_CONFIG_SRCDIR([src/haha.c]) AC_CONFIG_HEADERS([config.h]) # プログラムをチェックします。 AC_PROG_CC # ライブラリをチェックします。 # ヘッダーファイルをチェックします。 # typedef、構造体、およびコンパイラの特性をチェックします。 # ライブラリ関数をチェックします。 AC_出力
#変更されたファイル# -*- Autoconf -*- # このファイルを autoconf で処理して configure スクリプトを生成します。 AC_PREREQ([2.69]) AC_INIT(hhh, 1.0, [email protected]) AC_CONFIG_SRCDIR([src/haha.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE # プログラムをチェックします。 AC_PROG_CC # ライブラリをチェックします。 # ヘッダーファイルをチェックします。 # typedef、構造体、およびコンパイラの特性をチェックします。 # ライブラリ関数をチェックします。 AC_OUTPUT(メイクファイル) 保存して、configure.scan の名前を configure.ac に変更します。 新しいMakefile.amを作成する
次のコードを入力してください AUTOMAKE_OPTIONS=\ オートメイクオプション 外国 \ サブディレクトリオブジェクト bin_PROGRAMS=テスト_prj test_prj_SOURCES=\ lib/haha.h \ src/haha.c \ src/メインコード.c
aclocal を使用して aclocal.m4 ファイルを生成する
autoconfでconfigureファイルを生成する
自動ヘッダー付きのconfig.h.inを生成する
automakeでMakefile.inを生成するには、--add-missingを追加してデフォルトのファイルを自動的に追加する必要があります。 これでソフトウェアの準備が整い、パッケージ全体を github またはオープンソース フォーラムにアップロードできるようになります。 他のユーザーは、ソース コード パッケージをダウンロードした後、実行可能ファイルをどのようにコンパイルおよびリンクするのでしょうか?あるいは、実行可能ファイルをどのようにコンパイルしてリンクするのでしょうか? 以下はソースコードのインストールの一般的な手順であり、コンパイルとリンクの手順でもあります。 まずMakefileを生成する
そして
実行ファイルtest_prjが生成されたことがわかります。 実行すると、結果は次のようになります。 結果は正しいです。 srcディレクトリに入ると、さらに2つのファイルが見つかりました これは、AUTOMAKE_OPTIONS のサブディレクトリ オブジェクトの役割です。この文がなければ、2 つの .o ファイルがルート ディレクトリに表示されます。残念ながらプロジェクトが大きく、同じ名前のファイルが存在する場合は、深刻な結果を招く可能性があるため、この文を追加することをお勧めします。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: CocosCreator ユニバーサルフレームワークデザインネットワーク
>>: MySql はデータを正常に挿入しますが、[Err] 1055 エラーが報告されます。解決策
最近、MySQL を学び始めました。インストールはスムーズに進み、インターネット上の既成のチュートリ...
MySQL ログイン パスワードを忘れた場合、解決方法は実はとても簡単です。MySQL メイン構成フ...
最も人気のあるタグはIE8ですブラウザベンダーはバージョンアップデートのリリースに躍起になっている一...
CSS レイアウトを使用して WEB 標準に準拠した Web ページを作成することは、jb51.ne...
目次1. jsonp クロスドメイン2. document.domain + iframe クロスド...
原則: まず入力要素を非表示にし、次に CSS を使用してラベル要素のスタイルを設定します (他の要...
導入この記事では、django + uwsgi + nginx デプロイメントを使用して、Docke...
序文最近、フロントエンドの知識をまとめており、いくつかのインタビューにも参加しました。インタビュー中...
この記事では、効率を向上させ、時間を節約することを願って、最も効果的な 6 つの方法を紹介します。 ...
Windows 10 1903 は、2019 年に Microsoft がリリースした Windo...
目次Vue ミックスインの使用ミックスインでのデータアクセスミックスイン/index.jsホーム.v...
目次インストールルーティングの基本構成Vue にルーターをインストールするルーターの設定Router...
この記事では、Jiugonggeモバイルパズルゲームを実装するためのJavaScriptの具体的なコ...
この記事の例では、カスケードセレクターを実装するためのelementUIの具体的なコードを参考までに...
現在のトランザクションはどの履歴バージョンを読み取ることができますか?読み取りビューは、トランザクシ...