問題タブ [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.
android - sqlite を Android アプリケーションに静的にリンクするにはどうすればよいですか?
Android < 2.2 にバンドルされている動的ライブラリに影響するバグのため、Android アプリケーションに対して 3.6.2 バージョンの SQLite を静的にリンクする必要があります。開発マシンに 3.6.2 を既にコンパイルしてインストールしましたが、それを Android アプリ (Eclipse で開発) にリンクする方法がわかりません。
私はオプションの構築とコンパイルに慣れていないので、誰かが順を追って説明してくれれば幸いです。
x11 - 静的な X11 アプリが他のマシンで失敗するのはなぜですか?
X11R5 ライブラリを 32 ビット Fedora Core 9 マシンで静的にビルドしました。次に、X11 を使用するアプリを作成し、静的にリンクしました。ここまでは順調ですね。ldd は、静的にリンクされたアプリであると報告しています。ローカルで問題なく実行できます。しかし、それを 64 ビット FC9 マシンにコピーすると、次のように失敗します。
Assistant.static: xcb_io.c:228: _XSend: アサーション `!dpy->xcb->request_extra' が失敗しました。
中止しました
strace を実行すると、libXfixes.so を開こうとしているようです。
静的にリンクされたアプリケーションが共有 X ライブラリを開こうとする理由がわかりません。アプリを実行するために必要なすべてが静的リンクを介して含まれているべきではありません (もちろん、外部で処理する必要がある、アプリが行う Linux システム呼び出しは除きます)。
説明をありがとう!
c++ - 静的ライブラリが非常に大きいのはなぜですか?
約 15 のクラスとそのメンバー関数などの C++ コンパイル済み静的ライブラリがあり、コンパイルすると、ほぼ 14 メガバイトになります。これは Google の密なハッシュ テーブル ライブラリと MPIR (Windows の GMP のようなもの) にリンクしていますが、プレーンな exe でそれを行ったところ、数キロバイトでした。なぜそんなに巨大なのですか?サイズを小さくするにはどうすればよいですか?私のプログラムよりもはるかに複雑で、はるかに小さいプログラムが他にもあるようです。
Visual C++ でコンパイルされたコマンド ラインは次のとおりです。
c++ - 静的リンク GLU?
GLUTess を使用してポリゴンをテッセレートしています。いくつかのテストの後、glu32.dll にリンクしている glu32.lib が時々クラッシュすることに気付きました。一方、opengl sdk から取得した GLU は岩のようにしっかりしています。残念ながら、Windows dll にリンクしないということは、Windows の GLU32.dll に依存するのではなく、自分のアプリで GLU.dll をドラッグする必要があることを意味します。静的リンク可能な GLU のバージョンはありますか? 彼の小さなプロジェクトにdllの依存関係を持たせたくありません。
ありがとう
私のテッセレータコード:
ここで何か問題がありますか?
c++ - 静的リンク用にdllをlibに変換しますか?
dllを静的にリンクする無料の方法はありますか?dll to libを試しましたが、999ドルは高すぎます。1つのexe+1つのDLLではなく、1つの素敵なexeが必要なので、代替手段は何ですか。
ありがとう
qt - 画像を静的 QT アプリケーションにバンドルするにはどうすればよいですか?
いくつかの .bmp アイコン画像を含むツールを構築しています。アプリケーションを静的にビルドする場合、画像をアプリケーションのフォルダー内に配置して実行する必要があります。これは、そもそも静的アプリケーションを作成する目的を無効にします。ビルド プロセス中にイメージをアプリケーションにロールインする方法はありますか?
linux - Linuxの静的リンクは死んでいますか?
実際、 Linux の-static gcc フラグは現在機能しません。GNU libc FAQ から引用させてください。
2.22. 静的にリンクされたプログラムでさえ、私には受け入れられない共有ライブラリが必要です。私に何ができる?
{AJ} NSS (詳細については、「info libc "Name Service Switch"」と入力してください) は、共有ライブラリがないと正しく動作しません。NSS では、プログラムを再リンクすることなく、1 つの構成ファイル (/etc/nsswitch.conf) を変更するだけで、さまざまなサービス (NIS、ファイル、db、hesiod など) を使用できます。唯一の欠点は、静的ライブラリが共有ライブラリにアクセスする必要があることです。これは、GNU C ライブラリによって透過的に処理されます。
解決策は、--enable-static-nss を使用して glibc を構成することです。この場合、サービスの dns とファイルのみを使用する静的バイナリを作成できます (これについては /etc/nsswitch.conf を変更します)。これらすべてのサービスに対して明示的にリンクする必要があります。例えば:
このアプローチの問題点は、NSS ルーチンを使用するすべての静的プログラムをそれらすべてのライブラリとリンクする必要があることです。
{UD} 実際、このオプションでコンパイルされた libc が NSS を使用しているとは言えません。もうスイッチはありません。したがって、システム上のプログラムの動作に一貫性がなくなるため、 --enable-static-nss を使用しないことを強く お勧めします。
その事実に関して、Linuxで完全に機能する静的ビルドを作成する合理的な方法はありますか、または静的リンクはLinuxで完全に機能しませんか? 私は静的ビルドを意味します:
- 動的ビルドとまったく同じように動作します (動作に一貫性のない static-nss は悪です!)。
- glibc 環境と Linux バージョンの合理的なバリエーションで動作します。
android - 共有ライブラリへのfftw3の静的リンク
私は Android 用のピッチ補正ソフトウェアに取り組んでおり、NDK を使用して Android で fftw3 を動作させたいと考えています。
ピッチ補正ライブラリ (talentedhack、http: //code.google.com/p/talentledhack/) は fftw3 に依存しているため、fftw3 をスタティック ライブラリとしてコンパイルし、それを Talentedhack 共有にリンクしようとしています。図書館。現在、静的ライブラリ libfftw3.a として fftw3 をビルドしていますが、このような未解決の参照エラーが引き続き発生します。
ndk-build を使用して Talenthack 共有ライブラリをコンパイルするとき。ただし、ファイルを正しく取得しているように見えますが、これは不可解です。
Android.mk ファイルの関連部分は次のようになります。
プロジェクトの最上位レベルから ndk-build が呼び出されたときに失敗するコマンドは次のとおりです。
/opt/android-ndk-linux/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gcc -nostdlib -Wl,-soname,libtalentedhack.so -Wl,-shared,-Bsymbolic /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/circular_buffer.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/fft.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/formant_corrector.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/lfo.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/pitch_detector.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/pitch_shifter.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/pitch_smoother.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/quantizer.o /path/to/project/ndk/local/armeabi/objs/talentedhack/talentedhack.o -Wl,--whole-archive -Wl,--no-whole-archive /path/to/project/bin/ndk/local/armeabi/libfftw3.a /opt/android-ndk-linux/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/libgcc.a /opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib/libc.so /opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib/libstdc++.so /opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib/libm.so -Wl,--no-undefined -Wl,-z,noexecstack -L/opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib -llog -Wl,-rpath-link=/opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib -o /path/to/project/bin/ndk/local/armeabi/libtalentedhack.so
システムには実際にはfftwf_executeまたはいくつかの派手なマクロを使用しているため、または静的ライブラリを正しく処理していない Android NDK ビルドシステムの問題である場合、任意のヘッダーで定義された他の関数 (私が知ることができます)。どんな助けでも大歓迎です。
c++ - Boost autolinks libraries which are not built by Boost, but the intended ones are built
I am developing a Math application which can be extended by writing python scripts.
I am using Qt 4.6.3 (built as static library, debug and release versions) and Boost 1.43.0 (built as static library, runtime-link also set to static, multi-threaded version, debug and release). Everything is built with MSVC++2008. Boost built the following libraries:
- libboost_python-vc90-mt-s-1_43.lib
- libboost_python-vc90-mt-s.lib
- libboost_python-vc90-mt-sgd-1_43.lib
- libboost_python-vc90-mt-sgd.lib
My project compiles, but gives the following error during the linking phase:
Why is it not selecting one of my compiled libraries?
I think the s in the library names stands for static, but then the auto-linking feature seems to select a dynamic library, and I want it all linked statically in one executable.
The same happens with the regex library: I have the same 4 regex libraries compiled and a quick test shows this linking error:
What to do?
mfc - BOOST 1.35 を 1.43 にアップグレードすると、__pRawDllMain (mfc 関連) でリンカー エラーが発生する
職場では、1.35 で正常にビルドされた MFC 拡張 DLL がありますが、1.43 でビルドすると次のエラーが発生します。
BOOST_LIB_DIAGNOSTIC を有効にすると、古いビルド リストが表示されます。
と
したがって、リンクされているライブラリに変更はありません
完全なエラー メッセージは次のとおりです。
両方のライブラリ バージョンで tss_pe.cpp の diff を実行しましたが、それらは同一であるため、何が問題なのかわかりません。
定義することでメッセージを消すことができますが、BOOST_THREAD_USE_DLL
BOOST_THREAD-VC71-MT-GD-1_43.DLL を出荷する必要があるため、これが最善の解決策ではないと思います。