序文 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 エラーが報告されます。解決策
WebRTC は、Web Real-Time Communication の略で、Web リアルタイ...
SUSE Linuxでルートパスワードを忘れた場合の解決方法SUSE (Linux オペレーティング...
MySQL ウィンドウ関数の紹介MySQL は MySQL 8.0 以降、ウィンドウ関数をサポートし...
フォームのフロントエンド レイアウトでは、テキスト ボックスのプロンプト テキストを両端に揃える必要...
pre 要素は、フォーマット済みのテキストを定義します。 pre 要素で囲まれたテキストでは、通常、...
mysql-5.7.9 では、ついにシャットダウン構文が提供されます。以前は、MySQL データベー...
目次成果を達成する完全なコード + 詳細なコメントまとめ成果を達成する完全なコード + 詳細なコメン...
1. 現在の日付 DATE_SUB(curdate(),INTERVAL 0 DAY) を選択します...
XML スキーマは、DTD に代わる XML ベースのものです。 XML スキーマは、DTD に代わ...
IE6 と IE7 では CSS の解釈に多くの違いがあります。今日はそのうちの 1 つである高さに...
このチュートリアルは Windows システムにのみ適用されます。インストールしたがまだインストール...
1. 永続的な統計情報の重要性:統計は、MySQL が実行プランを生成するためのガイドとして使用され...
1. Python 3をダウンロードする https://www.python.org/ftp/py...
1. ファイルの権限と所有権の概要1. アクセス権Read r: ファイルの内容を表示し、ディレクト...
問題の説明: mysqladmin.exe を使用してコマンドを実行すると、次のエラー メッセージが...