問題タブ [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.

0 投票する
1 に答える
2524 参照

gcc - libtool を正しく使用していますか?

Linux、Ubuntu 10.04 を実行しています。

autotools を使用するのは初めてではありません。私は多くの調査を行い、多くのチュートリアルに従いました。これが私がやりたいこと、私が試したこと、そして私が直面している問題です。

目標:

  • libtool、autoconf、およびautomakeを使用して、Cでコーディングされた自分のライブラリをコンパイルします(そしてクロスコンパイルしますが、これは別の仕事になります)

私が試したことと私がいる場所

  • ライブラリ名は FXPLib、パッケージ名は libfxplib-0.1 です。

  • 私のプロジェクトフォルダーは次のとおりです。

    /li>
  • 自動スキャンを実行し、configure.ac を取得して、次のように編集しました。

    /li>
  • 私は次のように Makefile.am を書きました:

    /li>
  • 次に、 aclocalautoheaderを実行して、automake に必要なファイルを取得しました。
  • 次に最も重要な: autoconf
  • そして: automake --add-missing --copy

そこから、すべてがOKです。しかし、私はコンパイルしようとします:

こちらも全てOK...

そして、私は得る:

どこ :

  • 「graphics_engine」はsrc/ subに相当します
  • 「FXP_rendering.c」src/sub/ file.cに
  • src/sub2/ header.h「FXP_image_s.h」

つまり、automake はサブディレクトリの .c ファイルをコンパイルできますが、これらのファイルに他のサブディレクトリにあるプライベート .h ファイルを含めることはできません。

私の問題は次のとおりです。すべてのサブディレクトリ内のすべてのファイルを、すべて同じ場所にあるかのようにコンパイルするようにautomakeに指示する方法は?

私が理解できることを願っています(私はフランス人なので、私の言葉にいくつかの問題があることをお詫びします)

よろしくお願いします。

0 投票する
1 に答える
296 参照

vmware - リンクを使用せずにlibtoolを使用する

Makfilelibtoolいくつかのapacheモジュールを作成するために使用しています。

残念ながら、VMWare共有フォルダー(hgfs)で動作するようにmakefileが必要です。これは、いかなる種類のリンク(シンボリックリンクまたはハードリンク)もサポートしていません。

スクリプト内の変数にパッチを適用せずに、の代わりに使用libtoolして使用させることはできますか?したがって、システムの残りの部分を中断し、将来のアップグレードを防ぐことができますか?cpln -sLN_STlibtoollibtool

0 投票する
1 に答える
1580 参照

shared-libraries - 求められる説明:libtool、automake、共有ライブラリ(およびFortran)

私が抱えていた問題は解決されました。ソリューションが実際に機能する理由についての説明を求めるために、これを投稿しています。私は以前ここで素晴らしいフィードバックを得ました。

私は非常に単純なビルドシステムを使用したレガシーコードベースを持っています。私のプロジェクトは、カスタマイズ、特に共有ライブラリのビルドのためにそれをAutotoolsに移行することです。メインライブラリはCで記述されていますが、Fortranからリンク可能である必要があり(レガシー目的)、F77でいくつかのテストコードとともに配布されます。著者はソースコードをモジュールに編成しました...

彼らlib/libmain.aは、src _ * /ディレクトリにコードをコンパイルし、ranlibを使用してオブジェクトをアーカイブすることにより、ライブラリを構築しました。

私の最初のアプローチは、各src _ * /から個別に共有ライブラリを構築し、これらすべてを1つの共有ライブラリに「リンク」することでした。Autotoolsを使用するsrc_module1/Makefile.amと、

他のモジュールについても同様で、最後にlib/Makefile.am必要なのは次のとおりです。

これは完全に機能しているように見えました。ただし、testc /のコードがコンパイルされ、libmain.laに対してリンクされると、「シンボルが見つかりません」というエラーが発行されました。

これはlibtoolまたは共有ライブラリの問題だと考えて、静的のみをビルドし、基本的にすべてをに変更して.laみました。同じ問題。ただし、今回は、libmain.a自体をリンクしようとすると、「ranlib:ライブラリの警告:libmain.a目次が空です(ライブラリ内のオブジェクトファイルメンバーがグローバルシンボルを定義していません)」というエラーに注意してください。.a_LTLIBRARIES_LIBRARIES

私が見つけた解決策はハックのようです。src _ * /ディレクトリのいずれにもMakefileを作成しませんでしたが、代わりにlib /ディレクトリにのみ使用し、そのMakefile.amには次の行がありました。

これはうまくいきました。testc /でコンパイルされたプログラムは、問題なくlibmain.laに対してリンクされています。「モジュール」の1つは、ライブラリ内の他のC関数をラップするFortranバインディングのセットです。testf77 /のFortranコードでさえ、libmain.laに対して適切にリンクされています。

libtoolが共有ライブラリを構築するとどうなるかを誰かが注意深く説明できますか?または、静的ライブラリを構築する場合でも?複数の静的ライブラリをリンクして1つの静的ライブラリを作成できないのはなぜですか?libtool / ranlibが「ソースから」ライブラリをビルドする場合にのみシンボルが使用できるのはなぜですか?そして、共有/静的ライブラリをインストールする、つまり/ usr / local / libに移動するのはどうですか?---そこで何が起こりますか?静的ライブラリと共有ライブラリに関するウィキペディアの記事は、私にとって十分に詳細ではありません。

私の長年の質問を理解するためのあらゆる努力に感謝します。

0 投票する
1 に答える
65 参照

c - libltdl のモジュール参照カウントへのアクセス

Cコードでlibltdlを使用して、libtoolで作成された共有オブジェクトファイルを動的にロードしています。libtool のバージョンの dlopen によって返されるモジュール ハンドルごとに参照カウントが内部的に保持されているようです。この参照カウントにアクセスする方法はありますか?

0 投票する
2 に答える
1881 参照

c - automakeとlibtoolのリンクされたlibの問題

こんにちは私はClibtoolライブラリを開発しています。依存関係libxml2の追加に問題があります。私はGNUautotoolsを使用することにしました、バット私は非常に初心者です。

configure.acには次のものがあります。

MakeFile.acの場合:

configureスクリプトは正しく出力します:

生成されたMakefileには次のものがあります。

Makeを起動すると:

makeコマンドはlibxml2をリンクしません、誰かが私を助けてくれますか?

0 投票する
3 に答える
523 参照

compilation - libptraceのコンパイル

libptraceをコンパイルしようとしています(http://sourceforge.net/projects/libptrace/)。プロジェクトは、サポートを要求するための好ましい手段を宣伝していません(残念ながら、このプロジェクトは助けを得る最良の方法を示していません)。とにかく、私が直面している問題は次のとおりです。

libptraceとlibgnu.laをグーグルで検索すると、ヒット数はゼロになります。ソースでそれを取得すると、gitから新鮮になります。

libtoolアーカイブファイルを生成する方法がわかりません。ソースには、それ以外の方法でmakeターゲットやスクリプトがないようです。

管理者に関するメモ:この質問にタグ `libptrace'を追加してください-明らかに非常に人気のあるトピック-1.5Kポイントカウントを満たしていないため、追加できません:(


Melによるbuild.shの修正に応じて、`make'で生成される新しいエラーは次のとおりです。

0 投票する
1 に答える
2163 参照

c++ - libtoolベースのプロジェクトで-rpathと$ORIGINを使用しますか?

私は、おそらく非標準的な方法で、libtoolベースのパッケージを自分のプロジェクトに組み込んでみようとしています。これが私の目標です:

  1. 外部プロジェクトを構築する:

    /li>
  2. 実行時に外部プロジェクトの共有ライブラリと実行可能ファイルに依存する独自のプロジェクトをビルドします。

    /li>
  3. すべてを単一の「ローカライズされた」tarballにパッケージ化します...つまり$HOME/blah、ビルドホストにすべてを入れている間に、環境に煩わされることなく、tarballを任意のディレクトリ(他のホスト)に抽出できるようにします。その目的は、私のプロジェクトの複数のバージョンを、厄介な「他家受粉」なしに並べて共存できるようにすることです。

プロジェクトに使用-rpath '$ORIGIN/../lib'して、実行時に適切な共有ライブラリが常に読み込まれるようにすることができます。-rpathただし、libtoolは、の正確なパスに基づいて独自の設定を割り当てることを主張しているようです$HOME/blah/lib。これは、すべてを別のディレクトリ(たとえば$HOME/blah.2011-06-02)に解凍すると壊れます。

この制限を回避する方法はありますか?このトピックについて、debianとlibtoolの人々の間でかなり長いrpathの議論が見られますが、それはやや古く、「私たちは同意しません」を超えて決定的ではありません。

0 投票する
0 に答える
293 参照

makefile - libtool: 'make' コマンドはエラーなしで終了しますが、実行可能ファイルは作成されません

autotools と libtool を含むプロジェクトで「make」を実行すると、ライブラリは正しくビルドされますが、実行可能ファイルがそのパスに作成されません。これはautomakeによって生成された行です:

この行は何も出力しません (エラーも)。この Makefile.am に何か問題がありますか?

0 投票する
1 に答える
3543 参照

gcc - Linux /Ubuntu10.10でOpenLDAPforMIPSをクロスコンパイルします

実際にライブラリであるptlib-2.10.1/opal-3.10.1に依存しているため、mipsel-angstrom-linuxツールチェーンを使用してUbuntu10.10開発マシンでopenldap-2.4.23をクロスコンパイルしようとしています。使いたい。

build.sh以下に示す内容のスクリプトを設定しました。それ

ビルドは機能しますが、次のように中止されます。

他のライブラリにも問題がありました。追加LIBTOOL=libtoolすることで問題を解決できました。他のリソースで提案されているように、自分でコンパイルしようとしましmipsel-angstrom-linux-libtoolたが、うまくいきませんでした。

source / buildディレクトリでを実行しましたgrep libz -r .が、何も見つかりませんでした。どこを見ればよいかわかりません。

誰かが私の問題を解決するためのヒントをくれたらいいのにと思います。

編集:コードソースツールチェーンを使用して取得しresult.c:961: undefined reference to lutil_memcmp'ます。

0 投票する
1 に答える
2059 参照

unix - automake、libtool、および rpmbuild を連携させる方法

automakeと を使用してビルドされたパッケージの RPM を作成しようとしていますlibtoolが、問題が発生しました。rpmbuildパッケージのインストール済みプログラムに、パッケージの共有可能なライブラリのインストール ディレクトリのパス名が含まれていることを発見すると、中止されます (ののオプションautomakeの使用)。-rpathld

rpmbuildパッケージが再配置可能であることを保証するためにこれを行うことを理解しています。私の質問は、それについて何をすべきかです。共有可能なライブラリの使用を排除する (そしてその利点を失う) かautomake、共有可能なライブラリをインストールしないように指示し (オプションの使用を停止し-rpathます)、とにかくそれらをインストールすることができます。この後者のオプションの代償は、ユーザーが常に正しく設定された環境変数を持っている必要があることです。LD_LIBRARY_PATH

別のオプションはありますか?

あなたならどうしますか?