LoginSignup
8
7

More than 5 years have passed since last update.

Xcodeの警告の「-pie being ignored. It is only used when linking a main executable」はなんぞや

Posted at

対処法

無視する

筆者のバージョン

Xcode: 10.1
Cocoapods: 1.6.1

概要

-pieとは、位置に依存しない実行ファイルを生成したいときにつけるコンパイルオプション
実行ファイルを生成する以外の状況で、これを指定しても無視される。
無視されたさいに-pie being ignored. It is only used when linking a main executableという警告が出る。

Xcode上にて、通常のBuildでは発生しない。
ただし、InterfaceBuilderのPreviewのために行われるBuildのときに出る模様。(Xcodeでcmd+9を押したときに出る画面で確認できる。)1

Cocoapodsを使うと出るという情報が多いがCarthage使っていても出るし、手動でFrameworkをインストールしても出る。

  • Project
    • 「BuildSettings」
      • 「Linking」
        • 「Generate Position-Dependent Executable」
      • 「Apple Clang - Code Generation」
        • 「Generate Position-DependentCode」

この設定値がNoになっていると思われる。
Projectを新規作成したときのデフォルト値がNoであるようだ。
Cocoapodsで生成したxcworkspaceから見えるPodsプロジェクトの設定値もNo2

試しにこれらをYESにしたら、警告は消える。
だがそれは、本来デフォルトで位置に依存しない実行ファイルを作るところを、位置に依存する実行ファイルを作るように変更することなので、いろいろ怖い。

本当は、InterfaceBuilderにおいてのみこれをYESに設定したいところだが、Xcodeにはそんな機能はない。

よって無視すべきと言う結論に達した。


  1. これにより、CleanをしてXcodeを再起動すれば解決するという人もいるが、単にそれはInterfaceBuilder用のBuildがClean後に初めて行われる間警告が出ないというだけの話である。Storyboardを選択し、Rebuildが走ると復活する。 

  2. Cocoapodsを最新化し、xcworkspaceを生成し直したら問題が解決されるかもしれないと言っている人がいるが、1.6.1時点で治りはしない。 

8
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7