問題タブ [static-linking]
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.
delphi - デルファイプロジェクトを取得して、プロジェクトの出力としてlibファイルを作成することは可能ですか?
dllとLIBを作成したい。このdllは別のCPPdllに静的にリンクされているためです。だから私はlibファイルを持っている必要があります。
delphi4のIDEを使用しています
makefile - configure.in: AM_DISABLE_SHARED が Makefile を変更しない
私は Makefiles と autoconf を使用することに非常に慣れていません。Camellia イメージ ライブラリを使用しており、コードをそのライブラリに静的にリンクしようとしています。Camellia イメージ ライブラリで「make」を実行すると、/usr/local/lib ディレクトリ内に libCamellia.a、.so、.la、および .so.0.0.0 ファイルが作成されます。これは、ライブラリを使用してコードをコンパイルするために使用するコマンドです。
これは問題なく動作しますが、静的にリンクしようとすると、次のようになります。
Camellia のソース コードを変更しようとしていて、自分のバージョンと彼らのバージョンを比較したいので、静的にリンクしたいと考えています。それで、グーグルで調べた後、 AM_DISABLE_SHARED をconfigure.inファイルに追加してみました。しかし、./configure を実行した後でも、まったく同じ Makefile が得られます。「make install」した後でも、上記と同じ結果が得られます。
オリジナルの Camellia ソース コードをコンパイルしたバージョンと、変更したバージョンのコードの 2 つのバージョンを取得する簡単な方法は何ですか? 静的ライブラリが機能するはずだと思います。静的ライブラリを機能させる簡単な方法はありますか、それとも私の問題に対する他の簡単な解決策はありますか? 自分のバージョンを元のバージョンと比較するたびに、「make」と「make install」を再実行したくありません。
autotools - 静的にリンクされた依存関係を持つ autotools プロジェクトをコンパイルするにはどうすればよいですか?
使いたいオープンソースのライブラリがあります。ソフトウェアをバイナリ パッケージとして配布したいので、ライブラリに他のライブラリへの依存関係を持たせたくないので、依存関係を静的にリンクする必要があります。
現在、ライブラリはオープン ソースであり、バイナリは提供されていないため、自分でコンパイルします。ライブラリは autotools を使用しており、依存関係を静的にリンクする方法に関する有用なドキュメントは見つかりませんでした。私が試みたのは --enable-static を指定して構成スクリプトを呼び出すことですが、これはどうやら configure にライブラリの静的バージョンをコンパイルするように指示するだけですが、必要なのは、依存するすべてのライブラリを含む動的ライブラリです。
したがって、configure に依存関係を静的にリンクするように指示する方法、またはビルドされたライブラリを後処理してすべての依存関係を含める方法が必要です。誰でもこれを行う方法を教えてもらえますか?
ああ、それが重要な場合: 私は 64 ビットの Snow Leopard を使用しています。
objective-c - 私のフレームワークは他のフレームワークを利用しますが、これをエンドユーザーに透過的にしたいと思います
ユーザーに新しい開発環境を提供することを目的としたフレームワークを構築していますが、これを行うには RegexKit や他の確立されたフレームワークなどを使用する必要があります。そのようなフレームワークから公開された機能は、メンテナンス上の理由から、独自のフレームワークのクラスとメソッドを通じて抽象化されます (必要な依存関係について考えを変えることができます)。
理想的な世界では、単一の .framework を出荷したいだけです。ただし、標準のバンドルやアプリケーションとは異なり、フレームワーク バンドル内にフレームワークを埋め込むことはできないことを認識しています。RegexKit およびその他の依存関係もインストールする必要があることをエンド ユーザーに伝える以外に、他に選択肢はありますか? これは、私が構築することを想定していた使いやすい組み込みフレームワークの魅力を弱めていると感じています。
現在、選択肢が限られているように感じています。
- ユーザーに依存関係のインストールを強制します。
- 同じ機能を提供する独自のクラスを作成します。
- 可能であれば、サードパーティのフレームワークを静的にリンクしてみてください (これは可能ですか??)
私の最終製品は、理想的には @rpath を使用する単一の .framework バンドルであるため、システムにインストールするか、それを使用するアプリに単純にバンドルできます。
c++ - Visual Studio 2010 との静的な libpng リンク
アプリケーションに PNG サポートを追加しようとしているので、libpng を含めたいと考えています。zlib が必要であることはわかっているので、それもダウンロードしました。png フォルダー/projects/vstudio に入り、ソリューションを開きました。私はそれをコンパイルしましたが、うまくいきました。そこからいくつかのヘッダーをアプリケーションに追加し、lib ファイルをコピーしました。私のプログラムは、後で C# から使用される c++ で記述された dll です。C# で実行すると、dll が見つからないというエラーが表示されます (png 部分を削除しても問題なく動作します)。以前にこの問題が発生したことがありますが、通常は dll の依存関係が間違っていることを意味します。
さて... libpng はいくつかの .lib ファイルといくつかの .dll ファイルの両方をコンパイルしました。dll ファイルが大きくなります。私の唯一の推測では、dll ファイルも必要ですが、dll なしで libpng にリンクできることがわかりました。
私の質問は次のとおりです。libpng(およびそのインスタンスのzlib)を静的ライブラリにコンパイルするにはどうすればよいですか?また、それらをプロジェクトに含めるにはどうすればよいですか? インターネットで検索しましたが、有用なものは見つかりませんでした。
c++ - ライブラリに対する静的リンクは実際に何をしますか?
libfoo
クラス、いくつかの静的変数、おそらく「C」リンケージを持つもの、および他のいくつかの関数を含むと呼ばれるライブラリがあるとします。
これで、次のようなメインプログラムが作成されました。
これをコンパイルしてリンクすると、に対してリンクしlibfoo
ます。
これは何か効果がありますか?実行可能ファイルのサイズは大きくなりますか?もしそうなら、なぜですか?静的変数またはそのアドレスは実行可能ファイルにコピーされますか?
これと同様の質問がある場合、または私が何らかの形で特に愚かである場合は、お詫び申し上げます。
iphone - iPhone/iPad アプリケーションへの静的ライブラリのアタッチ
iPhone または iPad 用のアプリケーションに静的ライブラリを含める最良の方法はどれですか?
私はすることを選ぶことができました
- 適切なプラットフォームを提供するライブラリをコンパイルし、ユーティリティでライブラリ ファイルを
ar
構築してから、フレームワークとしてプロジェクトに追加します。 - ライブラリ .c/.h のソースを含めて、アプリケーションと一緒にコンパイルする
含めたいライブラリのすべての特定の設定を管理することは気にしないので、最初のアプローチはより簡単に思えますが、iPhone と iPad の両方のライブラリを作成し、リンク時に xcode が適切なライブラリを使用できるようにするにはどうすればよいですか?
2 番目のアプローチは、xcode がアプリケーションとライブラリのコンパイルを処理するため (設定が異なると思われます)、より複雑に思えます。lib のソースを簡単に追加できますが、xcode がそれらを使用して正しい方法でビルドできるようにするには、make スクリプトを含める必要があります。
続行する方法について何か提案はありますか? 含めようとしているライブラリはlibsshです。(もちろん、このライブラリは既にコンパイルされており、iPhone で正常に試行されていることは知っています)
前もって感謝します。
static - 共有よりも静的ライブラリの使用を強制するにはどうすればよいですか?
私のSConscriptには、次の行があります。
他のライブラリと動的にリンクしながら、sconsにmylib.soの代わりにmylib.aを使用させるにはどうすればよいですか?
編集:プラットフォーム固有のハックをできるだけ少なくすることを検討しています。
c++ - 静的変数をセットアップするために内部でコードを実行していない静的にリンクされたライブラリ
私が取り組んでいる c++ プロジェクトでは、プログラムの実行の開始時にいくつかのコードを実行する必要がある単純な c++ ファイルがあります。このファイルは静的ライブラリにリンクされ、メイン プログラムにリンクされます。
正常に実行されている他のファイルにも同様のコードがあり、次のようになります。
ただし、このファイルに実装されている関数を使用しない限り、このファイル内では機能しません。ライブラリが共有ライブラリとしてコンパイルされている場合は機能します。ファイルが別のディレクトリにあるため、ライブラリは便利なだけなので、これを静的にリンクすることをお勧めします。
更新 (解決策):
今のところ、静的ライブラリの代わりに共有ライブラリを作成すると、すべてが機能します。後で、すべてを静的ライブラリにリンクする方法を検討します。みんなの助けに感謝します!
c++ - ライブラリへの実行可能な依存関係
実行可能ファイルを共有する場合、その実行可能ファイルを作成するために使用されるライブラリについて本当に心配する必要がありますか? exeを実行する必要があるときではなく、exeを生成するときに考慮する必要があるようです。ちょっと興味があるんだけど。心配する必要はないと確信していますが、確認のためにこの質問をしたかったのです。後悔するよりも安全であること。