私のC++ xcodeアプリケーション用のいくつかの静的ライブラリ(私自身のライブラリ)から参照されていないシンボルをすべてリンクしようとしています。私は 'ストリップ'に関連するすべてのプロパティを(ストリップのプロパティを検索して)試しましたが、参照されていないシンボル、特にクラスはリンクされません。xcodeのC++デッドコードストリッピングを無効にする方法
私は-rリンカフラグを試しましたが、その後、リンカは唯一と文句を言う: :
「をLD -rと-dead_stripを一緒に使用することはできません」私はリンカのフラグに「-no_dead_strip」を追加しようとしたが、その後、リンカーはちょうど私 「-no_dead_strip」を伝えます無視されます。
「Apple LLVM」と「LLVM GCC」の両方で同じ結果が得られます。
私の質問は、すべてのデッドコードストリッピングをオフにし、参照されていないクラスを強制的にリンクするために使用するリンカーのフラグまたはターゲットプロパティです。
おそらく '--whole-archive'リンカフラグを試してみてください。 –
AndroidのNDKには、 'native glue'(静的ライブラリ)に、実装のないapp_dummy()という空の関数が含まれています。クライアント側(言及されたライブラリとのリンク)からこれを呼び出すと、明らかにそのコンパイルユニット内のシンボルのストリッピングが防止されます。私はより洗練された方法を探していたが、誰も見えなかったようだ。 – pauluss86