問題タブ [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.
c++ - シンプルなlibtoolの代替?
古いスタイルの Makefile に完全に満足しているので、libtool に代わる簡単な方法を探しています。automake に切り替えたくありません。libtool を直接使用しようとすると、問題が発生し続けます。最新のものは「サポートされていないハードコード プロパティ」であり、今回は何が問題なのかを説明する完全なドキュメントがないことにうんざりしています...
できるだけ多くのプラットフォームで動作するように、一連の .o ファイルを適切なフラグでコンパイルし、それらを共有ライブラリにリンクしたいだけです。他のすべてのツールを同時に切り替える必要のない、まさにそれを行うものはありますか?
compilation - Lenny AMD64 で Lighttpd 1.4.26 のコンパイルが失敗する
昨日、Debian Lenny ( AMD64 ) で Lighttpd 1.4.26 + mod_h264 をコンパイルしようとしましたが、失敗しました。私はそれらのエラーを得ました:
IRC、Google、およびメーリング リストの Libtools で多くの調査を行った結果、これをコンパイルするには最新の状態ではないようです。Libtootl 2.2+ は、Lenny の AMD64 のバックポートにはありません...この問題または解決策について何か考えがある人はいますか? ありがとう !
linker - ld.exe の autoconf libtool ライブラリ リンカ パスが正しくありません (ドライブ文字が必要です)
私はautoconfを使用し、ターゲットがmingwの場合、-mno-cygwinフラグを使用していました。これは削除されたので、mingw ツール チェーンを使用しようとしています。問題は、リンカーがライブラリを見つけられないことです
mingw リンカを使用してコマンド ラインからこれをリンクするには、-L
パスにドライブ文字が必要です。
動作します。-L
パスは、 を持つ から生成されmakefile.am
ます
top_builddir
ただし、相対パスに設定する方法や、ドライブ文字で開始する方法がわかりません(私の autoconf スキルは弱いです)。
一時的な「解決策」として、libtool の使用を削除しました。すべての -L オプションの前にハックでき$(DRIVE_LETTER)
ますが、もっと良いものを見つけたいです。
macos - OSX10.6でのlibnoiseのコンパイル
MacOS X 10.6用にコンパイルされたlibnoiseをコンパイルした人、またはコンパイル済みのlibnoiseを知っている人はいますか?libtoolの問題により、ここではそのままではコンパイルされません。
c++ - 他のライブラリに依存するライブラリの libtool バージョン管理
コア アプリケーションとそのインターフェイスで Boost と CgiCC を使用するフレームワークがあります。
ライブラリ バイナリ インターフェイス (別名 libtool ) をどのようにバージョン管理すればよい-version-info
ですか?
さまざまな変更を加えたときに、ライブラリ自体の変更を追跡するのに問題はありません。どのようにバージョンアップするべきかは明らかです。
しかし...
-version-info
Boost と CgiCC の両方のライブラリは下位互換性のある API/ABI を提供しておらず、私のライブラリは非常に任意のバージョンの Boost と CgiCC にリンクされている可能性があるため、インターフェイスについて約束することはできません。Boost と CgiCC の異なるバージョンに対してコンパイルされたライブラリは互換性がありません。
それで…どうしたらいいですか?ライブラリをバージョン管理するにはどうすればよいですか?
そもそも Boost や CgiCC インターフェースに依存すべきではないことはわかっていますが、これは既存の安定バージョンでこれまで得られたものです。この問題は次のメジャー リリースで対処されますが、非常に価値があるため、現在のリリースを維持したいと考えています。
c++ - 異なるバージョンの静的ライブラリを動的ライブラリにラップする
libsomething
私のプロジェクトでは、サードパーティからの静的ライブラリ (これから呼び出される) への依存関係があります。最近、libsomething
別のバージョンで利用できるようになりました。私の仕事は、私のソフトウェアに古いバージョンと新しいバージョンのサポートを提供することです。実行時に常に 1 つのバージョンのみlibsomething
が使用されますが、これがどのバージョンであるかは、プログラムの実行間で構成可能である必要があります。
私は WinXP で MSVC2005 を使用しています。二次的な目的は、Linux と GCC に切り替える準備をすることです。
の両方のバージョンがlibsomething
同じシンボルを使用しているため、リンク時に両方のバージョンのシンボルが衝突するため、両方を実行可能ファイルにリンクすることは問題外です。
2 つの実行可能ファイル (1 つは古いバージョンにリンクし、もう 1 つは新しいバージョンを使用) を作成できますが、最終的な展開環境でどの実行可能ファイルを呼び出すかを決定することはできません (従来の理由)。
libsomething
の各バージョンの動的ライブラリ ラッパーを作成し、いくつかの構成ファイルに応じて実行時にそれらをリンクするというアイデアを思いつきました。MSCV では、これは 、 などを使用する道を進むことを意味しますがLoadLibrary()
、GetProcAddress()
Linux では および を使用する必要がdlopen()
ありdlsym()
ます。
libtool
using (ie, libtldl
) が、共有ライブラリを使用するためのこのプラットフォーム依存性をラップしていることを理解しています。これは従うべき適切な道ですか?より良い (または、少なくとも異なる) 方法はありますか? の代替はlibtldl
オープンソースとして存在しますか?
autotools - libtoolバージョンの不一致エラー
Ubuntu10.04でkdevelop3.5を使用してアプリケーションをビルドすると、次のエラーが発生します。
必要なバージョンのlibtoolはどこで入手できますか、またはaclocal.m4を再作成するにはどうすればよいですか?
c - libtoolに変換すると、automakeとautoconfがlibtoolを見つけることができません
libcsvをlibtoolを使用するように変換しようとしているので、makefileを操作せずにmacosxで使用できます。ツールから生成されたmakefileを実行しようとすると、次のエラーが発生します。
OSX10.5を実行しています。それで、少しいじくり回した後、生成されたmakefileに空のlibtool変数があることに気づきました。
LIBTOOLをlibtoolに設定すると、すべて問題ありません。以下のautoconfまたはautomakeファイルを間違えたと思います。
それが助けになるなら、ここはconfig.logの一部です:
だから誰かが私が間違ったことを知っていますか?
前もって感謝します。
c++ - lt_dlopen(libtool) によってロードされた共有ライブラリからのインターフェイスの dynamic_cast が機能しない
これは私のプログラムのプラグイン機能についてです。インターフェイスを介してメインモジュールで使用できるプラグインにC++クラス(およびオブジェクト)が必要です。このようなインターフェースの継承:
次に、プラグインに次のようなインターフェイスを実装するクラスがあります。
プラグインの作成者は次のように定義されます。
最後に、メイン アプリケーションでクリエーターを使用して、次のようにプラグインを使用します。
問題は、dynamic_cast が常に失敗し、pAuto が nil になることです。ただし、WIN32 バージョンは正常に動作します。Linux で autoconf2.61 automake1.10.1 make3.81 g++4.4.4 libtool1.5.26 で問題が発生しました。私は Linux プログラミングの経験が少ないので、ここで助けを得たいと思っています。ありがとう!
完全なソース コードは、必要に応じて Sourceforge で入手できます: svn co https://rdwtwdb.svn.sourceforge.net/svnroot/rdwtwdb rdwtwdb
build-process - automake/Makefile.amを使用したIDLエンティティの生成
IDL(インターフェース記述言語)に慣れていない人のために、プラットフォーム(java、c、c ++など)で使用するためにデータ記述を抽象化します。私のプロジェクトには、Foo.idlから生成された依存関係Foo.c、Foo.h、FooHelper.c、およびFooHelper.hがあります。Foo.idlが変更されたときに任意のコマンドを実行し、ビルドプロセスにFoo.c、FooHelper.cを含めるにはどうすればよいですか?
私の現在の試みは、Makefile.amにルールを追加します。ルールが生成されたMakefileにコピーされることを期待しています。
私が試してみました:
次に、Foo.idlをmy_program_SOURCESに追加しましたが、ビルド時にthe_generate_commandを実行しません。
IDLからの生成に成功しました
ただし、Foo.c、FooHelper.cはコンパイルプロセスに追加されないため、ビルドされることはなく、the_generate_commandによって生成されるだけです。
すべてのコード(idlを含む)は$ PROJECT_DIR/srcにあります。