問題タブ [libtool]
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.
shared-libraries - pkglib_LTLIBRARIES = test.la を使用して *.so のみをビルドする方法
autotools を使用して共有オブジェクトを構築しています。
pkglib_LTLIBRARIES
Makefile.am で使用すると、 libtest.la
ANDlibtest.so
が構築されます。
ビルド/インストールするだけですlibtest.so
。
これは可能ですか?
linux - libtoolが.soファイル名に「U」を追加
私はautotoolsで構築されたプロジェクトを持っており、2つのフォルダーに分割されています。最初のライブラリであるlibはいくつかのライブラリを作成し、2番目のライブラリであるツールはそれらに対するリンクを作成します。
再リンク中にlibtoolがライブラリの名前を次のように変更するため、ビルドは失敗します。
名前の変更が行われた後、とにかく、以前の名前は復元されず、新しいmylib.1.0.0も作成されないため、 mylibのようなシンボリックリンクは、余分なUがなくても名前を指し、リンクは失敗します。
これを回避する方法はありますか?または、再リンクをまったく回避するためにさえも?libtoolバージョン1.5.6を使用しています。
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 は私にとって黒魔術ですが、代わりに使用する必要があります。ドキュメントは私には理解できません。
autoconf - Automake と同名のファイル
FreeBSD ホストでコンパイルするように適応させている C++ autoconf マネージド プロジェクトがあります。元のシステムは Linux だったので、AM_CONDITIONAL を 1 つ作成して、ビルドしているホストを識別し、コードをシステム固有のファイルに分けました。
configure.ac
Makefile.am
automake を実行すると、次のようなメッセージで失敗します。
Makefile.in ビルド プロセスでもこの条件を尊重するように automake を構成する方法についてのアイデアはありますか?
ファイルの名前が異なる場合、これは機能しますが、それは C++ コードであり、ファイル名をクラス名と同じに保とうとしています。
前もって感謝します!
c - ld:重複するシンボル_dbg_char
osxでリンカーエラーが発生する(同じコードでLinuxまたはfbsdでエラーが発生しない):
エラーにリストされている2つのライブラリは私のものですが、シンボルはそうではありません。c ++ flintは、「_ dbg_char」が両方のライブラリにあることを確認しますが、それがどこから来ているのかわかりません。
_dbg_charを特定する方法についてのトリック、戦略、完全な回答をいただければ幸いです。
プロジェクトはlibtool/autotoolsとgcc4.01を使用しています
msbuild - なぜautoconf/automakeプロジェクトはローカル開発ライブラリではなくインストールされたライブラリに対してリンクするのですか?
libgdata
いくつかのテストとインストールされていないプログラムを含むライブラリを作成しています。ライブラリを一度インストールすると、プログラムがローカルバージョンではなく、インストールされたバージョンにリンクしているように見えるという問題が発生しています../src/libgdata.la
。
何が原因でしょうか?私はひどく間違ったことをしていますか?
これが私のtest/Makefile.am
見た目です:
(libapiutil
libcurlとlibxml ++を処理するためのいくつかのヘルパーのものを持っている別のライブラリです)
したがって、たとえば、何もインストールせずにテストを実行すると、すべてが正常に機能します。ローカルで変更を加えることができ、それらはすぐにこれらのプログラムによって取得されます。
パッケージをインストールすると、これらのプログラムはコンパイルされますが(実際には、ヘッダーをローカルで検索しているように見えます)、プログラムを実行すると、シンボルの欠落について文句を言います。
私の知る限り、make出力に基づいて新しく構築されたライブラリ(../src/libgdata.la)とリンクしているので、なぜこれが発生するのかわかりません。インストールされたファイルを削除すると、src/*へのローカルの変更は問題なく取得されます。
以下にgdatacalendarのmake出力を含めました。
ヘルプ。:)
アップデート
addCommonRequestHeader()
メソッドなしでライブラリをインストールした後、Serviceクラスにメソッドを追加したときにカレンダープログラムを実行しようとすると、次のメッセージが表示されaddCommonRequestHeader()
ます。
変数の設定を試みるというEugeneの提案$LD_LIBRARY_PATH
は役に立ちませんでした。
更新2
私は2つのテストを行いました。まず、dev-installディレクトリ(--prefix)を吹き飛ばした後にこれを行いました。その場合、が作成されますtest/.libs/lt-gdatacalendar
。ただし、ライブラリをインストールすると、test/.libs/gdatacalendar
代わりにライブラリが作成されます。lddの出力は、1つの例外を除いて、両方で同じです。
これにより、ある場合にはlt-gdatacalendarが作成され、別の場合にはgdatacalendarが作成される原因は何でしょうか。
libgdataでのlddの出力は次のとおりです。
macos - LTLIBRARIES: mv *.Tpo *.Plo ですが、前者は存在せず、後者は既に存在します
私は既存のライブラリ(libtcod)をAutotools(OS Xの幸福のために)にかなり簡単に変換しています。残念ながら、Makefile.am
のlib_LIBRARIES
ルールをに切り替えるlib_LTLIBRARIES
と、ビルドは成功から失敗に変わります。以下の出力からの抜粋:
src/Makefile.am
次のようになります。
src/.deps
内容:
ここで明らかな間違いを犯していますか、それともこれでうまくいくのでしょうか?
linux - libtoolの.laファイルは何のためのものですか?
libtoolの.la
ファイルは何のためのものですか?それらは共有オブジェクトでどのように使用されますか?
autotools - Autotools を使用したプリコンパイル済みヘッダー
automake / libtool を使用するプロジェクトで gcc プリコンパイル済みヘッダーを使用することは可能ですか?
新しい make ルールを追加してプリコンパイル済みヘッダーを作成することは難しくありません。問題は、libtool によって導入されたコンパイル フラグも追加する必要があり、AFAIK ではヘッダー入力ファイルを処理できないことです。
どうやってそれができる?
autotools - libtool は「make distclean」によって削除されました
libtool をプログラムのソース ツリーにコピーして、プログラムと共に配布しました。しかし、「make distclean」を実行すると、libtool は生成された残りのファイルとともに削除されます。どうすればそれが起こらないようにできますか?
Makefile.amを入れてみEXTRA_DIST = libtool
ましたが、うまくいきません。
基本的に、configure.ac は次のようになります。