序文 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 エラーが報告されます。解決策
コメントとメッセージはもともと、ウェブマスターがコミュニティと読者層を構築するための優れた手段でした...
前回の CSS 回転灯と同じ内容の CSS アニメーションの応用です。これは単なる別のアプリケーショ...
今日、私はプロジェクトの移行の問題に取り組んでいましたが、突然、大量の写真をどうやって移動したらよい...
目次1. JavaScript がシングルスレッドなのはなぜですか? 2. タスクキュー3. イベン...
HTML と CSS で、ボタンの色を設定したいとします。 目的の効果は得られますが、プロセスはかな...
テストテーブルを作成する -- ---------------------------- -- ch...
目次1. 概要2. シンプルなクラスを定義する3. 継承4. public、private、prot...
エフェクトのスクリーンショット:実装コード:コードをコピーコードは次のとおりです。 <!DOC...
1. MYSQLのインストール1. ダウンロードしたMySQLインストールファイルmysql-5.5...
1. 広告の 85% は未読です<br />解釈: 成功する広告の 15% にどうやって...
目次ユーザー管理新しいユーザーを作成するユーザー名の変更ユーザーのパスワードを設定するルートパスワー...
序文Vue Router は、Vue.js の公式ルーティング マネージャーです。 Vue.js の...
これまでの数年間、私はいわゆる「設計仕様」についてかなりの数の執筆やコンサルティングを行ってきました...
MySQL では通常、limit を使用してページ上のページング機能を完了しますが、データ量が大きな...
CentOS8 に最小限のデプロイメントで OpenStack Ussuri をインストールするため...