GNU C コンパイラは無効なアーキテクチャ名をリンカに渡します。たとえば、gcc helloworld.i
エラーが発生しますld: unknown/unsupported architecture name: -arch arm
。 LDでいくつかの実験を行った結果、これがarmv7
私が使うべきアーキテクチャのようです。コンパイルとアセンブリの操作が正常に動作しているようです。
コンパイラコレクション(iphone-gcc)は、CCツールコレクションの外部にスタンドアロンインストールとして提供された最新のLD64ではなく、オープンソースのDarwin CCツールを介して提供されている古いバージョンのリンカと連携するように設計されているようです。 。リンカーに他のアーキテクチャを渡すようにGCCに指示する方法はありますか?-Wl,-arch,armv7
あるいは、GCCに渡すと-Xlinker -arch -Xlinker armv7
同じエラーが発生します。
答え1
ツールチェーンを断片的にアップグレードしないでください。これらの部分は一緒に機能する必要があります。 GNUツールはさまざまなバリエーションを可能にするため、特に次の作業のためにさまざまな部分が連携するように設定する必要があります。クロスコンパイラ。
何らかの理由で最新バージョンが必要な場合は、ld
それをサポートする完全なツールチェーンを構築する必要があります。
答え2
@Warren Youngのアドバイスを聞いて、リンカーの代わりに残りのツールチェーンをアップグレードしてください。
ARMベースのDarwin 9以上の場合、CoolStarツールチェーンBigBossリポジトリからインポートすることをお勧めします。ツールチェーンには、古いiphone-gccとLD64と最新のDarwin CC Toolsを置き換えるLLVM + Clangが含まれています。バラよりiPhone開発Wiki(少し昔ながらです)iphone-gccとLLVM + Clangをより詳細に比較するには、以下を参照してください。
答え3
EasyBuildツールを使用すると、複数のツールチェーンを自動的に提供できます。
https://hpc.uni.lu/users/software/#sw-toolchain
FI。 ClangGCCを見る
spec strings
GCCには、他のプログラムとどのように機能するかを指定するシステムがあります。http://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
あなたの使命は、作業が完了したら、必要に応じて調整して文書化したり、他の人が信頼できるEasyBuildツールチェーンを作成することです。