2

ffmpegライブラリを使用するCプロジェクトに取り組んでいます。現在、私はWindowsプラットフォームで作業しており、 Linux ARMのプロジェクトをクロス コンパイルする予定です。そのような背景があるため、基本的な質問はほとんどありません。

  1. ANSI C++を使用すると、対応するコンパイラを使用してプロジェクトをクロスコンパイルできると確信できます[ MSVC, MingW ]

    しかし ..

  2. プロジェクトで「Win32」およびその他の「Windows」固有の API を使用している場合、クロス コンパイラはそれをどのように処理して、プロジェクトを Linux で実行できるようにしますか。

  3. 同様に、プロジェクトで Linux 固有の「機能」を使用している場合、クロス コンパイラはそれをどのように処理して、プロジェクトを Windows で実行できるようにしますか。
4

2 に答える 2

2

クロスコンパイルする場合、クロスコンパイルされるコードは、ターゲット プラットフォーム (つまり、最終的に実行されるプラットフォーム) で利用可能な API を使用する必要があります。クロスコンパイラは、その出力が Linux マシンで実行されている場合、魔法のように Win32 API へのアクセスを許可しません。これは、ターゲット マシンでコードをコンパイルするのと同じですが、実際にコンパイルする必要はありません。つまり、ARM Linux ボックスでネイティブ (非クロス) コンパイラを実行するだけで同じことを実現できますが、コンパイラを実行するには十分に強力な ARM ボックスが必要です。

とはいえ、原則として、 winelibを使用して win32 API を提供しながら、Linux にクロスコンパイルできます。ただし、ARM でどの程度うまく機能するかはわかりません。実際には、x86 でのみ使用することを意図しています。

最後に、クロスコンパイルは最良の場合でも非常に複雑になる傾向があることに注意してください。x86 Windows から ARM Linux へのクロスコンパイルではなく、x86 Linux から ARM Linux へのクロスコンパイルの方が簡単になるかもしれません。

于 2012-11-02T06:40:50.167 に答える
1

Winapiを使用している場合、プロジェクトはLinuxで実行できません。

于 2012-11-02T06:37:31.813 に答える