[解決済み] CMAKEで-fPICコンパイラーオプションを追加する慣用的な方法は何ですか?
2022-04-21 19:16:42
質問
少なくとも3つの方法に出会ったが、どれが慣用的な方法なのか疑問に思っている。 これは、どの静的ライブラリにもほぼ共通に必要なことです。 CMakeのMakefileジェネレーターが静的ライブラリにこれを自動的に追加しないことに驚いています。 (私が何かを見逃していない限り?)
target_compile_options(myLib PRIVATE -fPIC)
add_compile_options(-fPIC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic")
また、他のバリエーションもあると思います。(見つけたら質問を編集してください)
もしあなたがこの質問に対する答えを知っているなら、サードパーティのCMakeプロジェクトのCMakeLists.txtファイルを変更せずに、このフラグでコンパイルさせる方法があるかどうかも知っていますか? 私はこのフラグがない静的ライブラリに遭遇したことがあります。 これは、静的ライブラリを動的ライブラリにコンパイルする際に問題を引き起こします。
得ることができます。
relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
解決方法は?
すべてのターゲットに位置独立コードプロパティを設定することができます。
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
または特定のライブラリで
add_library(lib1 lib1.cpp)
set_property(TARGET lib1 PROPERTY POSITION_INDEPENDENT_CODE ON)
関連
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み】システムが指定されたファイルを見つけられませんでした。