問題タブ [unix-ar]
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 - 静的ライブラリの結合
libPixel.aに依存する *libRGB.*a に依存するlibColor.aという 3 つのC静的ライブラリがあるとします。ライブラリlibColor.aは、ライブラリlibRGB.aに依存していると言えます。libColor.a には、 libRGB.aで定義されたシンボルのいくつかへの参照がいくつかあるためです。上記のすべてのライブラリを独立した新しいlibNewColor.aに結合するにはどうすればよいですか?
独立とは、新しいライブラリにすべてのシンボルが定義されている必要があることを意味します。したがって、リンク中に-lNewColorを指定するだけです。新しいライブラリのサイズは最小限に抑える必要があります。つまり、 libRGB.a にlibColor.aなどで使用されていないシンボルを含めないでください。arコマンド (静的ライブラリ/アーカイブの作成と更新に使用)でさまざまなオプションを使用して、運試しをしました。 )。
xcode - 静的ライブラリ(xcodeリンカー)を作成するためのlibtool vs ar
libtoolを介したxcodeとコマンドラインを介したarを使用してMac10.5で静的ライブラリを作成すると、どちらもlibMainProject.aファイルが生成されますが、libtoolによって生成されたファイルを使用してxcodeアプリケーションにリンクしようとすると、次のような複数のメッセージが表示されます。
"参照元のproject1のvtable:_ZTV27project1 $ non _lazy _ ptr in libMainProject.a(project1.o)"
arを使用すると、まったく問題なく、正しくリンクされます。リンク中にlibtoolに-cオプションを追加しようとしましたが、影響はないようです。だから私の2つのオプションは
1)arバージョンとlibtoolバージョンのシンボルの違いの原因を突き止め、libtoolに同じ情報を生成させます。
2)静的ライブラリを生成するためにxcodeがlibtoolの代わりにarを使用するようにします。
任意のアイデアや提案をいただければ幸いです。
前もって感謝します。
performance - ar アーカイブのパフォーマンスを向上させる
最終的な実行可能ファイルにリンクする前に、静的ライブラリにビルドする大量の自動生成コードを含むプロジェクトがあります。gcc/gnat 5.04a を使用します 非常に多くのファイルがあるため、ジョブをバッチに分割し、ar を複数回呼び出してライブラリを構築する必要があります (コマンドラインの長さの制限を回避するため)。
潜在的な速度の改善を探しています。アーカイブが大きくなるにつれて、オブジェクトを追加する前に (更新を) 検索する必要があるため、各バッチにかかる時間がどんどん長くなるようです。これが、古いアーカイブをそのまま更新するよりも、アーカイブを削除する方が速くなる理由のようです。速度を上げるために、フラグ「qcS」を ar コマンドに使用します。マニュアルページによると、「q」(クイック追加する必要があります)は実際には「r」(「置換を使用」)の同義語であり、「c」はアーカイブを作成し(特別なものはありません)、「S」はスキップしますインデックスの生成 (最後に「ranlib」を使用してカバーします。
組み込みツールを使用して、この操作を高速化する便利な方法はありますか? 「クイック追加」モードが機能する場合、それはおそらく私たちが望んでいることですが、残念ながら.
c++ - 静的ライブラリを他の静的ライブラリにリンクする
多くの静的ライブラリ(a_1-a_n)に依存する小さなコードがあります。そのコードを静的ライブラリにパッケージ化して、他の人が利用できるようにしたいと思います。
私の静的ライブラリは、Xと呼びましょう。正常にコンパイルされます。
Xの関数を使用する簡単なサンプルプログラムを作成しましたが、それをXにリンクしようとすると、ライブラリa_1--a_nからシンボルが欠落しているというエラーが多数発生します。
XとXに必要なすべての機能(a_1-a_nから選択されたビット)を含む新しい静的ライブラリYを作成して、プログラムをリンクするためにYだけを配布できるようにする方法はありますか?
アップデート:
arですべてをダンプし、1つのメガライブラリを作成することを検討しましたが、不要なシンボルが多数含まれることになります(すべての.oファイルは約700 MBですが、静的にリンクされた実行可能ファイルは7です。 MB)。実際に必要なものだけを含める良い方法はありますか?
これは、複数のC / C ++ライブラリを1つに結合する方法と密接に関連しているように見えますか?。
linux - Linux で .dll を使用可能
質問: Linux で .dll ファイルを使用してプログラムをコンパイルすることは可能ですか?
目的: この .dll は、サード パーティのプロプライエタリ ソフトウェアに php 拡張機能を書き込むために使用されます。
背景と研究:
というライブラリが与えられましたproprietary.lib
。.lib
これまで拡張機能を見たことがなかったので、興味があったので、次のように入力しました。
出力は次のとおりです。
私はいくつかの調査を行い、それar
が多かれ少なかれあることを発見しました (実際、ほとんどの *nix 環境で置き換えられたtar
と思います)。tar
ar
ar
マンページを調べたところt option
、そのアーカイブの内容を一覧表示した表が表示されていることがわかりました。涼しい。だから私はタイプします:
そして得る:
glibc - .a ファイルの構築中に使用される glibc のバージョン
.a ファイルから、どのバージョンの glibc が予想されるか、.a のビルド時に使用されたかを調べる方法はありますか?
unix - 静的ライブラリの作成
一般に、ar rcs
コマンドを使用してUNIX上に静的ライブラリを作成します。
ここのmanページにあるフラグ「s」はどういう意味ですか
アーカイブシンボルテーブルを生成しないでください。これにより、いくつかのステップで大規模なライブラリの構築をスピードアップできます。結果のアーカイブはリンカーで使用できません。シンボルテーブルを作成するには、arの最後の実行でS修飾子を省略するか、アーカイブでranlibを実行する必要があります。
「結果のアーカイブはリンカーで使用できません。」という文に混乱しています。
arコマンドの後に静的ライブラリを作成するためにranlibを使用する必要がありますか?ranlibの目的は何ですか?また、どのように使用されますか?
bash - ar を使用して既存のファイルをクロバーする
ar
既に存在するアーカイブ名で使用すると、次のメッセージが生成されます。
既存のアーカイブ名は、(によって作成されたmktemp
) 空のファイルです。
とにかくそこにあるものは何でも壊したいのですが、既存のファイルの内容は(それがあるar
かどうかにかかわらず)私には興味がありません。どうすればこれを強制できますか?
Update0
私は現在rm "$libcpfs_a" && ar rcs "${libcpfs_a}" ${libcpfs_objs[*]}
、回避策として使用しています。
linux - `gar` または `ar` に `elf32-i386` 出力を出力するように指示するにはどうすればよいですか?
からのヘルプ出力を見ると、次のように表示されgar -h
ます。
出力gar
を作成するように指示するにはどうすればよいですか?elf32-i386
linux - 2 つの "ar" 静的ライブラリを 1 つにマージする方法は?
と によって作成された 2 つの静的 Linux ライブラリがar cr
ありlibabc.a
ますlibxyz.a
。
それらを 1 つの静的ライブラリにマージしたいlibaz.a
。
これどうやってするの。
両方のライブラリをアプリケーションの最終リンクに提供するのではなく、マージされた静的ライブラリを作成したい。