私が取り組んでいるプロジェクトのメークファイルをまとめています。プロジェクトには実行可能ファイルと共有ライブラリがあります。両方ともオブジェクトファイルに別々にコンパイルされた同じソースファイルのいくつかを使用します。これらのオブジェクトを共有ライブラリで使用できるようにするには、gccで-fPIC(position independent code)フラグを使用する必要があります。実行可能ファイルで使用される-fPICを使用してオブジェクトをコンパイルすることの意味はありますか?実行ファイルでgcc -fPICフラグが指定されているオブジェクトをコンパイルするとどうなりますか?
10
A
答えて
9
位置非依存のコードをコンパイルする必要がない場合は、一部のプラットフォームではパフォーマンスが低下します(PICは非PICの場合にはより自由に使用できるレジスタを削除するためです)そうでなければ有害な影響を与えてはならない。
さらに、位置に依存しないコードだけで構築された位置に依存しない実行可能ファイル(-fPIE
)を作成することも可能です。
つまり、libtoolは、コンパイルする各ソースファイルに対してPICとPIC以外のオブジェクトを自動的に生成することができます。また、libtoolを統合しないビルドシステムでも同じことを行うのは簡単です。
関連する問題
- 1. -fPICフラグを指定してlibperl.aオブジェクトファイルを再コンパイルするにはどうすればよいですか?
- 2. "-fPIC"フラグ(共有ライブラリなし)で実行可能なコンパイル
- 3. GCCは、Haswellが指定されていない限り、先行ゼロカウントをコンパイルしません。
- 4. エラー:Armadilloをインストールしようとすると-fpicで再コンパイルされます
- 5. コードが64ビットマシンでコンパイルされているかどうかを確認するGCCプリプロセッサディレクティブはありますか?
- 6. Eclipseで-strictフラグを指定してGWTをコンパイルするにはどうすればよいですか?
- 7. -O2または-O3フラグを指定してコンパイルしたときに例外がキャッチされない
- 8. -fPICなしでコンパイルされたコードに対してmexファイルをリンクする方法はありますか?
- 9. callback()が実行されないとどうなりますか?
- 10. TypeScript 0.9。* VisualStudio TS5037: '--module'フラグが指定されていない限り、外部モジュールをコンパイルできません。
- 11. GCCでCファイルをコンパイルするとエラーが発生しますか?私はカーリーLinux上でCの実行ファイルをコンパイルしようとしている
- 12. System.exit(0)が実行されるとどうなりますか?
- 13. AS3 - コードを実行しているオブジェクトが削除されるとどうなりますか?
- 14. 静的ライブラリをコンパイルするために-fPICを指定すると、実行時にセグメンテーション違反が発生するのはなぜですか?
- 15. ライブラリが特定のGCCバージョンでコンパイルされているかどうかを確認する方法
- 16. gitを実行すると、コミットされたファイルはどうなりますか?
- 17. Windowsの下でlinux gccコンパイルされたプログラムを実行する
- 18. CLion:Swift - 「実行ファイルが指定されていません」
- 19. Maven:どのアセンブリプラグイン実行が実行されるかを指定する方法
- 20. mavenプロジェクトでIntelliJのファイルをコンパイルすると、何が実行されますか?
- 21. nodejs fs.openSync()でフラグ 'a'を指定すると、存在しないファイルが作成されません。
- 22. 指定されたファイルが見つかりません - vbscriptから実行可能な実行可能ファイル
- 23. どこでコンパイルされていないスクリプトを実行できますか?
- 24. 指定されたファイルが変更されたかどうかCMakeターゲットを実行する方法?
- 25. Visual Studio TypeScriptエラー "モジュールに '--module'フラグが指定されていなければコンパイルできません。
- 26. ICUは `-fPIC`でコンパイルされていても、MRIで静的に構築することはできません
- 27. Qtがno-angleと-no-openglでコンパイルされるとどうなりますか?
- 28. NUnit:実行するフィクスチャがコマンドラインで指定されているときにグローバルセットアップフィクスチャが使用されない
- 29. OWLDataRangeオブジェクトに指定された値が含まれているかどうかを確認する方法は?
- 30. os.OpenFileでO_CREATEフラグを指定すると、このようなファイルやディレクトリはスローされません。
GCC7では、-fPICでコンパイルされたものがすべて必要になります。少なくとも私はnエラーを取得し、なぜ私はエラーを取得するの検索でこの質問を発見した? – Lothar
@Lotharいいえ、それは一般的にそれを必要としません。 '-fPIC'の有無にかかわらずコンパイルされたオブジェクトですか? – ephemient