タグ付けされた質問 「linker」

リンカは、コンパイルされたプログラミング言語で記述されたソースコードから実行可能ファイルを生成するためのツールチェーンの一部です。複数のファイルでコンパイルされたオブジェクトコードを受け取り、それらから単一の「リンクされた」実行可能ファイルを生成します。

12
Pythonをマシンコードにコンパイルすることは可能ですか?
Pythonを(おそらくCの中間表現を介して)マシンコードにコンパイルすることは、どの程度実行可能でしょうか? おそらく、それはPythonランタイムライブラリにリンクする必要があり、Python標準ライブラリの一部であるPython自体もコンパイル(およびリンク)する必要があります。 また、式の動的評価を実行する場合は、Pythonインタープリターをバンドルする必要がありますが、これを許可しないPythonのサブセットは引き続き有用です。 速度やメモリ使用量に利点がありますか?おそらくPythonインタープリターの起動時間がなくなります(ただし、共有ライブラリは起動時にロードする必要があります)。
128 python  c  linker  compilation 

5
Mac OS Xでスタティックライブラリ(.a)のターゲットアーキテクチャを特定するにはどうすればよいですか?
特定のiPhone静的ライブラリがARMまたはIntel用にビルドされているかどうかを確認することに興味があります。 それは何よりも好奇心です。これを行うためのMac OS XまたはBSD固有のツールはありますか?この投稿はLinuxでの例を示しています。

2
GHCで巨大なバイナリにコンパイルされた小さなHaskellプログラム
些細な小さなHaskellプログラムでさえ、巨大な実行可能ファイルになります。 私は(GHCで)コンパイルされてサイズが7 MBのバイナリにコンパイルされた小さなプログラムを書きました! 小さなHaskellプログラムでも巨大なバイナリにコンパイルされる原因は何ですか? これを減らすにはどうしたらいいですか?

1
動的にリンクされると、共有ライブラリのグローバル変数と静的変数はどうなりますか?
グローバルと静的変数を持つモジュールがアプリケーションに動的にリンクされたときに何が起こるかを理解しようとしています。モジュールとは、ソリューション内の各プロジェクトを意味します(ビジュアルスタジオでよく仕事をしています!)。これらのモジュールは、*。libまたは* .dllまたは* .exe自体に組み込まれています。 アプリケーションのバイナリには、データセグメント内の個々のすべての翻訳単位(オブジェクトファイル)のグローバルデータと静的データ(およびconstの場合は読み取り専用データセグメント)が含まれていることを理解しています。 このアプリケーションがロード時の動的リンクを備えたモジュールAを使用するとどうなりますか?DLLにはグローバルとスタティックのセクションがあると思います。オペレーティングシステムはそれらをロードしますか?もしそうなら、彼らはどこにロードされますか? そして、アプリケーションがランタイム動的リンクでモジュールBを使用するとどうなりますか? アプリケーションにAとBの両方を使用する2つのモジュールがある場合、AとBのグローバルのコピーは以下のように作成されますか(それらが異なるプロセスの場合)? DLL AおよびBはアプリケーショングローバルにアクセスできますか? (理由も記入してください) MSDNからの引用: DLLソースコードファイルでグローバルとして宣言された変数は、コンパイラとリンカーによってグローバル変数として扱われますが、特定のDLLをロードする各プロセスは、そのDLLのグローバル変数の独自のコピーを取得します。静的変数のスコープは、静的変数が宣言されているブロックに限定されます。その結果、各プロセスには、デフォルトでDLLグローバル変数と静的変数の独自のインスタンスがあります。 そしてここから: モジュールを動的にリンクする場合、異なるライブラリが独自のグローバルのインスタンスを持っているかどうか、またはグローバルが共有されているかどうかが不明確になることがあります。 ありがとう。

4
リンカーは何をしますか?
私はいつも疑問に思っていました。コンパイラは、あなたが書いたコードをバイナリに変換することを知っていますが、リンカは何をしますか?彼らはいつも私にとって謎でした。 「リンク」とは大まかに理解しています。ライブラリとフレームワークへの参照がバイナリに追加されたときです。それ以上はわかりません。私にとってはそれは「うまくいく」だけです。動的リンクの基本も理解していますが、あまり深くありません。 誰かが用語を説明できますか?

1
-all_loadリンカーフラグは何をしますか?
Objective-Cコードをコンパイルするときに-all_loadフラグが何をするのか、どこにも見つかりません。 バイナリをAppleにアップロードする際にいくつかの問題があります。彼らは、このフラグを使用しなかったためだと言っていますが、コードがそれなしでもコンパイルされます。 誰かが私を助けてくれますか? ありがとう

8
Visual C ++:特定のリンカー警告を無効にする方法?
私はCGALのライブラリを使用しています。これは、コードコンパイルのリンク段階で、次の形式の多くのリンク警告を生成します。 warning LNK4099: PDB 'vc80.pdb' was not found with 'gmp-vc80-mt-sgd.lib' or at 'vc80.pdb'; linking object as if no debug info Visual C ++ / Studio 2008でこの特定のリンカー警告をオフにするにはどうすればよいですか? 私が使用している外部(CGAL)ライブラリを制御できないことに注意してください。外部ライブラリを再コンパイルすることはできません。したがって、私の側でメッセージを修正する必要があります。

23
Visual StudioでC ++プロジェクトをコンパイルすると、致命的なエラー「LNK1104:ファイル 'C:\ Program.obj'を開けません」が発生するのはなぜですか?
Visual Studio 2008で新しいC ++プロジェクトを作成しました。コードはまだ書かれていません。プロジェクト設定のみが変更されました。 プロジェクトをコンパイルすると、次の致命的なエラーが表示されます。 致命的なエラーLNK1104:ファイル 'C:\ Program.obj'を開けません
117 visual-c++  linker 

4
特定のglibcバージョンにリンクするにはどうすればよいですか?
Ubuntu Lucid 10.04 PCで何かをコンパイルすると、glibcにリンクされます。Lucidはglibcの2.11を使用します。古いglibcがインストールされている別のPCでこのバイナリを実行すると、glibc 2.11がないとコマンドが失敗します... 私の知る限り、glibcはシンボルのバージョン管理を使用しています。gccに特定のシンボルバージョンを強制的にリンクさせることはできますか? 具体的には、ARM用のgccクロスツールチェーンをコンパイルしてみます。
110 linux  gcc  linker  glibc  libc 

4
Visual Studio Express 2005で完全に静的にリンクされた.exeを作成するにはどうすればよいですか?
私が現在好んで使用しているC ++環境は、無料で非常に優れたMicrosoft Visual Studio 2005 Expressエディションです。時々私はリリース.exeファイルを他の人に送って満足のいく結果を得ました。しかし最近、私はこの楽しい結果が私が望むより多くの幸運に基づいているという不穏な発見をしました。これらのプログラムの1つを古い(2001年のヴィンテージで、厳密に更新されていない)XPボックスで実行しようとすると、「システムはx.exeを実行できません」(または同様の)メッセージしか表示されませんでした。 一部のグーグルは、このツールセットで静的リンクを指定しても、実際には余分な.dllファイル(msvcm80.dllなど)に依存する単純なhello-world.exeになることを明らかにしました。信じられないほど精巧なバージョンのスケミングシステム(誰でもファイルをマニフェストしますか?)では、正しい.dllバージョンがなければ、.exeを実行できません。私はこのようなものを望まない、または必要としません。最も一般的な分母のWin32操作しか実行せず、古いwin32 OSで実行される、昔ながらの自己完結型.exeが欲しいだけです。 既存のツールセットでやりたいことができるかどうか誰かが知っていますか? ありがとうございました。

8
一部のライブラリのみの静的リンク
GCCとリンクするときに、特定のライブラリのみをバイナリに静的にリンクするにはどうすればよいですか? gcc ... -static ...リンクされたすべてのライブラリを静的にリンクしようとしますが、一部の静的バージョン(libX11など)がありません。


6
__gxx_personality_v0の目的は何ですか?
これはOS開発サイトからの中古の質問ですが、どこにもまともな説明が見つからなかったので、興味津々でした。 gccを使用して独立したC ++プログラムをコンパイルおよびリンクすると、次のようなリンカーエラーが発生することがあります。 out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' これは明らかに、このシンボルがlibstdc ++で定義されているためです。これは、独立した環境にはありません。問題を修正するには、このシンボルをどこかに定義する必要があります。 void *__gxx_personality_v0; どちらがいいですか、魔法のように機能するものが好きではありません...問題は、このシンボルの目的は何ですか?
103 c++  gcc  linker  kernel 

3
C ++ 17、C ++ 14、およびC ++ 11オブジェクトをリンクしても安全ですか
3つのコンパイル済みオブジェクトがあり、すべて同じコンパイラ/バージョンで生成されているとします。 AはC ++ 11標準でコンパイルされました BはC ++ 14標準でコンパイルされました CはC ++ 17標準でコンパイルされました 簡単にするために、すべてのヘッダーがC ++ 11で記述されており、3つの標準バージョン間でセマンティクスが変更されていない構成体のみを使用しているため、相互依存関係がヘッダーインクルードで正しく表現され、コンパイラーが異議を唱えなかったとします。 これらのオブジェクトのどの組み合わせがそれであり、単一のバイナリにリンクするのは安全ではありませんか?どうして? 編集:主要なコンパイラ(gcc、clang、vs ++など)に関する回答を歓迎します
97 c++  c++11  linker  c++14  abi 

15
テンプレート化されたC ++クラスを.hpp / .cppファイルに分割することは可能ですか?
.hppと.cppファイルに分割されているC ++テンプレートクラスをコンパイルしようとするとエラーが発生します。 $ g++ -c -o main.o main.cpp $ g++ -c -o stack.o stack.cpp $ g++ -o main main.o stack.o main.o: In function `main': main.cpp:(.text+0xe): undefined reference to 'stack<int>::stack()' main.cpp:(.text+0x1c): undefined reference to 'stack<int>::~stack()' collect2: ld returned 1 exit status make: *** [program] Error 1 これが私のコードです: stack.hpp: #ifndef _STACK_HPP #define …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.