問題タブ [autotools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - gcc はインストールできますが、g++ は動作しませんか?
単純な C++ プログラムに問題があります...
プログラムをインストールしたいのですが、「c++ コンパイラは実行可能ファイルを作成できません」などのエラーが常に発生します...
ここで、単純な「hello world」プログラムをコンパイルしようとしましたが、ac コンパイラで c++ プログラムをコンパイルした場合と同じようにエラーが発生します (「`cout' undeclared」... iostream を含めましたが)...
私のマシンで g++ が動作しない場合、今はよくわかりません。
この問題を解決する方法を知っている人はいますか?
よろしくお願いします...
クリス
Paxの回答に応じて追加:
まあ、私のコードは大丈夫だと思います。別のマシンでコンパイルできます。名前空間 std を使用します...
だから、g ++の構成が一致していないなどの可能性はありません...?
linux - libtoolが.soファイル名に「U」を追加
私はautotoolsで構築されたプロジェクトを持っており、2つのフォルダーに分割されています。最初のライブラリであるlibはいくつかのライブラリを作成し、2番目のライブラリであるツールはそれらに対するリンクを作成します。
再リンク中にlibtoolがライブラリの名前を次のように変更するため、ビルドは失敗します。
名前の変更が行われた後、とにかく、以前の名前は復元されず、新しいmylib.1.0.0も作成されないため、 mylibのようなシンボリックリンクは、余分なUがなくても名前を指し、リンクは失敗します。
これを回避する方法はありますか?または、再リンクをまったく回避するためにさえも?libtoolバージョン1.5.6を使用しています。
java - デフォルトでローカル Java ライブラリをインストールする場所は?
JNI バインディングを C++ ライブラリと統合しています。
ライブラリは通常の規則に従います。インストール ルートは/usr/local
デフォルトであり、--prefix
引数 toで変更できます./configure
。.a
または.so
ファイルが入ります${prefix}/lib
。等
JNI バインディングは、libfoojni.so
(ネイティブ部分) とlibfoo.jar
(Java 部分) の 2 つの新しいライブラリを生成します。
このスキームの下で、これらのファイルを配置する従来の場所は何ですか (例: ${prefix}/java
)?
ユーザーが別個の Java ルート ディレクトリ (例: /usr/share/java
) を指定できるようにすることは望ましいですか?
libfoojni.so
Java 固有のサブディレクトリに移動する${prefix}/lib
必要がありますか?
autotools - GNU Autotools 用に大きなプログラムを再構成する方法
C で書かれたかなり大きなプログラムがあります。これは複数のファイルにまたがっており、プラットフォームの問題を補うために少しツールを変更しています。具体的には、さまざまな OS、アーキテクチャ、および処理に使用するマクロを定義するコンパイラのヘッダー ファイルがあります。例として、-v
フラグは、それを構築したコンパイラの名前、構築されたオペレーティング システムとアーキテクチャを含むバージョン情報を出力します。これが重要な理由の例として、プログラムは C コード ファイルを作成し、必要に応じてそれをコンパイルできます。このタスクでは、ビルドに使用したコンパイラにシステム コールを実行するだけです。
また、GNU Readline ライブラリ (または BSD Editline ライブラリ - 同じもの) がシステムにある場合はサポートし、ない場合は純粋な ANSI であるすべての優れた Readline 機能を含まない同等のライブラリもサポートします。
肝心なのは、いくつかの機能は、使用している OS/アーキテクチャ/コンパイラにかなり大きく依存しているため、プラットフォームに依存する部分を取り除くことはできません。持っている人にもいい機能を提供したい。そして、標準./configure
のインターフェースでダウンロードしてインストールしてもらいたいのです。make
make install
configure
現在、Makefile をゼロから作成し、OS/アーキテクチャ/コンパイラに基づいてどのヘッダー ファイルを含めるかを決定する、申し訳ありませんが手作りのシェル スクリプトを使用しています。より効率的なアプローチが必要で、GNU Autotools を使用したより標準的なビルド システムを使用したいと考えています。そうすれば、私が行っていることは、他の人のコンピューターでテストしなくても、他の人のコンピューターで機能することがわかります。
私の質問は、そのすべてに苦労してきた人への質問です (ありがとう!)、1) 自作ビルドシステムから GNU Autotools に切り替えるにはどうすればよいですか? 2) GNU Autotools を使い始めるための優れたチュートリアルは何ですか? 3) どうすればこれを比較的簡単なプロセスにすることができますか?
packaging - 個々のautotoolsプロジェクトを別の「プロジェクト」にグループ化する最良の方法は何ですか?
「ライブラリのライブラリ」を作成し、autotoolsetを使用して個々のプロジェクトを管理したいと思います。さらに、ライブラリのセット全体を同時に構築できるようにしたいと思います。
個々のライブラリ:
- libyarconveniencezzz
- libyarfoo
- libyarbar
- libyarbaz
トップレベルのMakefileを手作業で作成し、個々のライブラリ/コンビニエンスライブラリを独自のオートツールセットパッケージにする必要があるのではないかと思います。
私はこれと同様のことをしましたが(4、5年前)、参照コードを失いました。私が本当に覚えている唯一のことは、私が望むようにすべてをセットアップする前に、autotoolsをいじくり回して数ヶ月かかったことでした。
autotools - libtool の遅さ、二重構築?
私のプロジェクトでは、モジュールは整理のためにサブディレクトリに編成されています。
私のプロジェクトのディレクトリ階層:
configure.in:
Makefile.am:
Makefile.cvs:
src/Makefile.am
ソース/ログ/Makefile.am:
src/main.cpp:を含みint main(){}
、 src/log/log.cpp を含みますvoid f(){}
。
呼び出すとmake
生成されます(簡潔にするために編集されています):
問題は最初の 3 行です。log.cpp が 2 回コンパイルされています。
質問:半分の時間でコンパイルできるのはなぜですか?
注:自分が何をしているのかわかりません。autotools は私にとって黒魔術ですが、代わりに使用する必要があります。ドキュメントは私には理解できません。
c - Autotoolsで行われているように、CMakeでヘッダーファイルとライブラリ関数をチェックする方法は?
現在、小さな C プロジェクトをautotoolsからCMakeに変換しています。
以前はconfigure.in
、次の行を使用して、すべてのヘッダーとライブラリ関数の存在を確認しました。
これは、多くのautotoolsプロジェクトがAFAIKで行っていることです。
コンパイラが必要なヘッダー ファイルを既にチェックし、リンカがライブラリ関数をチェックしているという事実にもかかわらず、私のコードでは、コンパイル フラグなどを適切に設定するために、configure 段階でこれらのチェックを実行する必要が#ifdef HAVE_FOOBAR
あります。
この場合、CMake でヘッダー/関数をチェックするベスト プラクティスは何ですか?