問題タブ [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 に答える
130 参照

c++ - 共有オブジェクト内の互換性のない名前のシンボル - 問題を探す場所

私はLinuxが初めてです。2 つの Linux マシン、1 つの 40 コア サーバー (A) と 1 つのクラスター (B) にアクセスできます。両方のマシンで同じことをしようとしていますが、A では動作しますが、B では動作しません。どちらにも sudo 権限がありません。A は、debian スクイーズ/sid で実行されます。B はカーネル 2.6.18-238.el5 で動作します。/etc の下にリリース情報ファイルが見つかりませんでした。A には gcc 4.6.2 があり、B には gcc 4.1.2 があります。

特定のメッシング ソフトウェア Pkg1 と特定のソルバーである Pkg2 を両方のマシンにローカルにコンパイルしてインストールしました。どちらも Libtool と automake が必要です。Pkg2 は .so ファイルです。すべて正常に動作し、例を実行できました。コードは mpicxx でビルドされました。どちらも mpi コンパイラが異なります。A は openmpi154 を使用し、B は qlogicmpi_gnu-0.1.0 を使用します。

ここで、私のコード、たとえば Pkg3、いくつかの .cpp ファイルを紹介します。私はそれから .so を構築しました。Libtool と automake は使用しませんでした。コンパイラとリンカとして gcc を使用した単純な make ファイル (mpicxx も試しました) が使用されました。

A では、Pkg3 は問題なく動作します。B では、Pkg3 がクラッシュします。メッセージ St8bad_cast を使用して、Pkg3 の一部の型を Pkg2 で定義された型に動的にキャストしようとすると、クラッシュします。別のデータ ファイルの場合、Pkg2 の関数が Pkg3 から型をキャストしようとすると、「要素の型は N5ngfem8FE_Segm2E 期待される型は N5ngfem19ScalarFiniteElementILi1EEE です」というメッセージでクラッシュします。

どこで問題を探すのですか? 曖昧でごめんなさい。ここにあるソフトウェアはすべてオープンソースですが、パッケージが大きすぎて、自己完結型の再現を少しの作業で作成することはできません。automake と Libtools も、mpi もまだ使用していないため、問題が悪化しています。Pkg1 と Pkg2 の makefile を調べて、単純な makefile で CXX、LDFLAGS などをマップしようとしましたが、automake/libtools によって作成された複数の間接化が困難です。

Pkg2 のシンボルは、シンボル テーブルで Pkg3 のシンボルとは異なる方法でマングルされていることを理解しています。しかし、それはリンカの世話をするべきだった?! Pkg3 の「-Wl、-E」オプションありとなしの両方を試しました。-fPIC は常にあります。Pkg3 をリンクするルールは、ライブラリ Pkg2 () を指します。Pkg3のmakefile本体を掲載しました。

注 1:

./configurePkg2のコマンドには-Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lpthread 、つまり、-E フラグがありません。しかし、それが参考として私に指定された方法です。

注 2:

リンク規則 -L/home/lv70227/elan/ng/lib で定義されたパスには、pkg2.so.0.0.0、それへの 2 つのシンボリック リンク、および pkg2.sa ではなく pkg2.la があります。 libtools.

問題がどこにあるのかについてのヒントをいただければ幸いです。A と B にインストールされているさまざまな mpi、gcc、mkl ライブラリに対応するために、両方のマシンで同じ手順に従いました。

ありがとう、エラン。

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

autotools - automakeを使用してライブラリのオプションのパブリック型/関数を処理する正しい方法は何ですか?

私が管理しているライブラリには、pthreads に依存する関数がいくつかあります。プロジェクトは automake を使用します。pthreads への依存関係を無効にする構成オプションを作成したいと考えています。これは単にこれらの関数をコンパイルしないようにする必要があります。(理由は、特定のクロスコンパイルおよび組み込みターゲットのためです。)

これらの関数を含むファイルをコンパイルしないことは今のところ問題ありませんが、これらの関数とそれらが使用する 1 つの構造体がパブリック ヘッダーで定義されていることに気付きました。

  1. ライブラリのメンテナンスの観点から、ここでの正しいアプローチは何ですか?
  2. パブリックヘッダーで型または関数をオプションにする正しい方法は何ですか?

最初は、ヘッダーを autoconf 入力 (.in) ファイルに変換し、これらの関数とタイプをオプションで削除してヘッダーを生成する必要があると考えました。

では、異なるバージョンのライブラリが同時にインストールされている可能性のあるシステムについてはどうでしょうか? 通常、これらはヘッダーを共有できるはずです。

これらの関数を回避するためにプリプロセッサ条件を使用するヘッダーを作成し、pkg-configそれをコマンドライン オプションとして指定するために使用する必要がありますか?

別のアイデアは、これらの関数と型を独自のヘッダーに移動し、pthread が無効になっているときにこのヘッダーをインストールしないようにすることです。これは、ヘッダーの編成をわずかに台無しにすることを意味しますが、おそらく最良のアイデアです。私はあなたの意見が欲しいのですが、ライブラリの公開ヘッダーでオプション機能を処理する最良の方法は何ですか?

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

c++ - lt_dlopen が失敗した場合に詳細情報を取得するには?

私は呼び出しlt_dlopenて、一般的なファイルが見つからないというエラー (翻訳された errno テキスト) を取得しています。ファイルは間違いなくそこにあるので、実際に何が失敗しているのかについての詳細情報を取得するにはどうすればよいですか。

これは、C++ ライブラリをロードする C++ プログラムです。同じプログラムの他の場所では、同じコマンドを使用して他のライブラリを問題なく開くことができるため、このライブラリに固有のものである可能性があります。私は使用lddしており、ライブラリのすべての依存関係が満たされています。

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

linker - libtoolコマンドラインでlibsを繰り返す

私はautomakeを使用しており、次のようなlibtool呼び出しを取得しています:

ライブラリ (私の制御範囲外) には循環依存関係があり、複数回言及する必要があることに注意してください。残念ながら、libtool はライブラリに対する複数のリクエストを 1 つのリクエストにまとめて実行しているようです。

ライブラリの 2 番目のパスがなくなったことに注意してください。リンカー エラーが大量に発生します。そのgccコマンドラインを追加の-lフラグで手動で実行すると、機能します。

gcc に要求したすべてのライブラリを libtool に渡すにはどうすればよいですか?

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

gcc - Heroku用にgerbvを静的にコンパイルする方法

Heroku binディレクトリに含めることができるようにgerbv2.6をコンパイルしようとしていますが、理解できないようです。私は次のさまざまな組み合わせを試しました:

しかし、実行した後、make私は常に次のようになります。

アイデアが足りなくなっています。誰か持ってる?

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

c++ - Libtoolのバージョンの不一致

古いプロジェクトのソースをダウンロードしました。私は今それを構築しようとしています:

正常に動作しますが、次のようになります。

psその小さなプロジェクトページ:http ://sourceforge.net/projects/rccparser/

何か助けはありますか?

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

gcc - Ubuntu での pcre-8.30 のコンパイル エラー

Ubuntu 10.04 で pcre-8.30.tar.gz をコンパイルしようとしたときにエラーが発生しました。何が起こっているのかわかりません。

Makefile を読んだところ、次の行が見つかりました。

ここで、$(DEFS) は「-DHAVE_CONFIG_H」オプションです。libtoolではなく、gccのオプションだと思いますよね?

このあたりでエラーが出ているようですが、どうすれば解決しますか?

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

makefile - 非標準プレフィックスへのglibのインストールは失敗します

非標準のプレフィックスでglibをインストールしようとしていますが、実行すると次のようになりますmake install

/ usr / local / libで終わるプレフィックスにのみgthreadインストールする必要がある理由は何ですか?

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

bash - この bash コードは何をしているのですか?

以下は、オープン ソース プロジェクトの libtool というファイルで見つけたコードです (このシステムではコンパイルされていません)。

optarg=...ケースステートメントは取得できますが、最初の行がわかりません。それは何を手に入れようとしていますか?このテスト ケースでは、次のようにします。

これを OS X で実行すると、次のようになります。

変数 optarg に「arm-elf-gcc」を割り当てようとしている可能性があると思いますが、よくわかりません。ソフトウェア全体は Ubuntu で適切にコンパイルされますが、libtool ファイルは大きく異なります。

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

shared-libraries - GNU/Libtool クロスコンパイル

について非常に基本的な質問がありGNU/Libtoolます。私のプロジェクトはによって構築され、によって構築さGNU/autotoolsれた共有オブジェクトが含まれていますGNU/Libtool。マシンi386上で共有オブジェクトをコンパイルしたいので、次のようにします。x86-64

構成スクリプトは、共有ライブラリがサポートされていないことを通知し、makeコマンドは失敗します。このクロスコンパイルの問題を修正するにはどうすればよいですか?

Libtool マニュアルで答えを見つける必要がありますか?