序文 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 エラーが報告されます。解決策
説明 ソリューションVMware 15 仮想マシン ブリッジ モードではインターネットにアクセスでき...
著者が MySQL を使用してユーザーを追加していたところ、ユーザー名が間違って記述されていることに...
Docker はポートを IPv6 にのみマッピングし、IPv4 にはマッピングしません。 dock...
mysql ログインのコマンド形式は次のとおりです。 mysql -h [hostip] -u [ユ...
私が書いた内容が理解できない場合は、インターネット上に理解できるチュートリアルがない可能性があります...
Mac で開発されたプロジェクトがあり、パッケージ npm i がインストールされており、すべて正常...
序文通常のビジネスニーズ: 写真、Excel などをアップロードします。結局のところ、数 MB のサ...
ネイティブJavaScriptでスキニングを実装するための具体的なコードは参考までに。具体的な内容は...
序文MySQL の日常的な開発やメンテナンスでは、パスワードの紛失やテーブルの破損など、避けられない...
秘密鍵を開かずにリモート サーバーのデータベースに接続するのは非常に便利です。新しい接続でデータを入...
500 (内部サーバー エラー) サーバーでエラーが発生したため、要求を完了できませんでした。 50...
CSS3 の列シリーズ属性を使用してウォーターフォールレイアウトを作成する方法を紹介しました。興味の...
<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...
機能: データ表示、テーブルアプリケーションシナリオ。 <table> テーブル<...
私はパフォーマンス テストを行うために常に Loadrunner を使用してきました。 Loadru...