問題タブ [libgcc]
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.
gcc - コンパイル済みファイルに mingw ライブラリを含める
cmake を使用して Eclipse CDT MinGW プロジェクトを生成しています。(エクリプス版ケプラー)
これは私のCmakelistです:
コードは私のコンピューターでは問題なくコンパイルおよび実行されますが、他の PC では実行されません。いくつかの dlllibgcc_s_dw2-1.dll
が必要です。コンピューターでこの dll を探したところ、C:\MinGW\bin
. 問題を解決するために、このフォルダーの内容を別の PC にコピーし、最終的に exe ファイルを実行しました。ただし、コンパイルプロセスでこれらのライブラリを追加して、Windows PCでexeファイルを実行するためのより良い方法があるかどうか疑問に思っています。
私は読んでいましたが、コンパイラが静的ライブラリにリンクするようにする必要があります。Eclipse で、[プロパティ] > [C/C++ インクルード パスとシンボル] および [プロジェクト パス] > [ライブラリ] の下に dll を追加しようとしましたが、機能しません。CmakeList を変更しようとしましたが、機能しません。
C:\MinGW\bin
この問題の理由と、exe ファイルに内容を含める方法がわかりません。
助けてくれてありがとう
gcc - GCC コンパイラの Libgcc のビルド方法
gcc コンパイラをビルドせずに libgcc をビルドする方法はありますか?
libgcc の構成スクリプトを実行しようとしましたが、../../gcc/libgcc.mvars が見つからないと表示されます。
私の基本的なニーズは、さまざまなバージョンの libgcc 用に複数の構成を持つ複数のプラットフォーム用に libgcc を構築することです。
c++ - Code::Blocks へのリンカー オプションの追加
Win 7 x64 マシンで Code::Blocks でコンパイルされた実行可能ファイルを実行しようとすると、libgcc_s_dw2-1 が見つからないため実行できないと表示されます。
ライブラリをリンカーオプションに含めるという解決策を見つけました。(ここから入手した参照は次のとおりです: http://forums.codeblocks.org/index.php?topic=16748.0;prev_next=prev。最後の投稿を見てください)
問題は、リンカ設定に移動すると、プロジェクト ビルド オプションで、そこに利用可能なライブラリがないことです。ダウンロードする必要がありますか
投稿で述べられているように、それらをディレクトリに配置して、Code::Blocks がそれらを認識し、リンカー オプションに追加できるようにしますか? はいの場合、ライブラリはどこに配置すればよいですか?
linux - libgccをビルドするとき、GCCはGNUアセンブラに依存しますか?
GCC 4.7.3 をビルドしようとしています。かなり古いシステム GCC 4.1 でビルドすると、すべて問題なく、GCC 4.7.3 を取得できます。しかし、コンパイルしたばかりの GCC 4.7.3 (実際にはそれ自体をビルド) で再構築しようとすると、AS (GNU アセンブラー) で問題が発生します。古くてバグのあるシステム コンパイラを使用せずにビルドします。すべてのパスとすべてのライブラリが正しいです (私はそれを確認しました)。すべての前提条件を構築できます。
しかし、libgcc のビルドを開始すると、C コンパイラの検出でスタックします。
エラーのある config.log の一部を次に示します。
問題は、xgcc が (内部的に?) GCC を GNU AS フラグ (たとえば --32) を使用してアセンブラーとして呼び出すことですが、私は GNU AS を使用していません! 私は GCC しか持っておらず、そのアセンブラーを使用するつもりです! libgcc をビルドするときに GCC アセンブラーの使用を強制する構成オプションまたは何かがありますか? 私の GCC 設定パラメータ:
GCC 自体のビルドでわかるように、「--with-as=」コマンドで GCC をアセンブラーとして強制的に使用します。しかし、GCC の内部 libgcc コンパイル段階でそれを行うにはどうすればよいですか? または、GCC は GNU AS アセンブラーに依存していますか?
ノート:
xgcc は、アセンブラーを呼び出す 'as' スクリプトを呼び出します。私の場合、「as」には文字列 ORIGINAL_AS_FOR_TARGET="/build/gcc/bin/gcc" があり、GCC をアセンブラーとして使用することになっています。ただし、xgcc は GNU AS 固有のパラメーターを使用して呼び出します。
c - libgcc を -nostdlib コンパイルにリンクする
libc (またはその他) に依存せずに実行可能ファイルを作成しようとしています。最初に私はこれをしました:
でコンパイルgcc -m32 -nostdlib test.c -o test
:
ここまでは順調ですね。後で、より「高度な」C のようなものを使用しようとしましたlong long
。32 ビット プラットフォーム (私の場合) では、次のものが必要libgcc
です。
これは でコンパイルに失敗しundefined reference to '__divdi3'
ます。実際にリンクするように言わなかったので、正しいようです。しかし、フラグを追加して-static-libgcc
も問題は解決しません! なんで?
libgcc に動的にリンクできないことに注意してください。以下が当てはまる必要があります。
gcc 4.8.2 を使用して 64 ビットの Ubuntu 14.04 からコンパイルしています (特別なものはありません)。
c# - Ubuntu で x64 として実行される .NET x32 をターゲットとするアプリ
そのため、ユーザーがUbuntuのソフトウェアで抱えている問題をデバッグしようとしています。
x86 プラットフォーム向けの C# アプリをコンパイルしました。x64 Windows イメージで実行すると、アプリは x32 アプリケーションとして動作します。
ただし、Ubuntu で mono を使用して同じアプリを実行すると、x64 であると表示されます。
次に、非常に厄介なエラーが発生します
pthread_cancel を機能させるには、libgcc_s.so.1 をインストールする必要があります。
windows - Rust でビルドされた DLL は実行時に libgcc.dll を必要としますか?
Rust 言語でDLL をビルドする場合libgcc*.dll
、実行時に存在する必要がありますか?
一方では:
- インターネットのどこかで、そうだと主張する投稿を見たことがあります。
rustc.exe
libgcc_s_dw2-1.dll
ディレクトリにあり、http://crates.io Web サイトcargo.exe
からダウンロードした場合、dll なしでは実行されません。
一方で:
- Rust でおもちゃの OS カーネルを構築することに関する記事を見たことがあります。
だから、私は混乱しています。明確な答えは何ですか?
assembly - AVR libgcc から欠落している数学記号
不明なバージョンの GCC 用に生成された AVR アセンブリがあります。このソースをオブジェクト コードにアセンブルできますが、リンクしようとすると、未定義のシンボルが含まれていると言われます。
具体的には、次の記号がありません。
これらは libgcc シンボルのようですがlibgcc.a
、私のバージョンの AVR-GCC (4.8.3) には存在しません。これらのファイルでこれが実行nm
されていることを確認しましたが、これらの名前が定義されたシンボルはありませんでした。
AVR-GCC のどのバージョンにこれらのシンボルが存在していたのか、存在していたのか、または別のライブラリによって提供されていたのかを判断できませんでした。他の検索は実を結ばなかったので、SO の知恵が私の謎を解決できることを願っています。
わかりやすくするために、問題なくアセンブルされるがリンクに失敗するアセンブリ ファイルの簡単な例を次に示します。
これをリンクしようとすると、次のエラーで失敗します。
私が使用しているlibgccは次のとおりです。
記号を含まないもの__udivqi3
あるいは、これらのシンボルを含む GCC のバージョンが存在しない場合、同じ呼び出し規約に従い、同じタスクを実行するドロップイン置換はありますか?
c++ - libgcc_s.so は同じプロセスで静的および動的にリンクされていますか?
私のアプリは多くの共有ライブラリを取り込みます。一部は、libgcc_s.so をプルする libstdc++.so をプルする C++ で記述されています。さらに、プレーン C で記述され、-static-libgcc でリンクされているものもあります。
そのため、複数の共有ライブラリ内で静的にリンクされた libgcc のビットと、実行時に libgcc の他のビットを動的にロードする libstdc++ があります。
Q1: この設定で問題は発生しますか? libgcc には、この混合リンケージを問題にする内部状態がありますか?それとも単にインライン化された関数ですか?
Q2: アプリを古い Linux で動作させるには、libstdc++.so と libgcc_s.so を出荷し、メインの exe で rpath を使用してロードする必要があります。これは正しい方法ですか?
linux - libgcc を静的にリンクしますか? (Linux)
libgcc を静的にリンクすると、Linux 上のバイナリの下位互換性が向上しますか?
デフォルトで同梱されていない Linux ディストリビューションはありますか? それとも、古い Linux には古い互換性のない ABI を備えたものがあるのでしょうか?