ubuntuサーバー上で異なるシステムの実行可能プログラムをクロスコンパイルするにはどうすればよいですか?

WBOY
リリース: 2024-03-06 13:34:02
転載
354 人が閲覧しました

多くの C プログラマーは「サーバーの gcc バージョンが異なる場合はどうなるのですか? 相互に影響を及ぼしますか?」という疑問を抱いたことがあると思います。

答えは「はい」です。通常、gcc を使用してソース ファイルをコンパイルする場合、この gcc はシステム環境変数 PATH で最初に見つかる gcc です。

異なるシステム用にプログラムをクロスコンパイルしたい場合はどうすればよいでしょうか?これには、複数のコンパイル ツール チェーンのセットが必要であり、対応するツール チェーンを使用してターゲット システムのプログラムをコンパイルします。

デフォルトのパス

  • コンパイラ パス: 通常は /usr/bin ディレクトリに配置されます。
  • ヘッダー ファイル パス: システム レベルのヘッダー ファイルは通常、/usr/include に配置され、標準ライブラリのヘッダー ファイルは通常、/usr/local/include に配置されます。
  • ライブラリ パス: システムの動的ライブラリは通常、/usr/lib および /lib に配置され、静的ライブラリは通常、ここまたは /usr/local/lib に配置されます。 ###。

パスを手動で設定する

コンパイラ パス

/usr/bin はすでに PATH 環境変数に含まれているはずなので、通常はコンパイラ パスの環境変数を変更する必要はありません。別のコンパイラを使用する必要がある場合は、その完全パスを直接使用するか、PATH 環境変数を変更してコンパイラを指すようにすることができます。例: リーリー

これにより、指定したパスが既存の

PATH の前に追加され、システムは最初にここで実行可能ファイルを検索します。

クロスコンパイラのセットアップ

Marvell が提供するツール チェーンを使用して、Ubuntu 上で ARM アーキテクチャ プログラムをコンパイルする必要があります。このツールチェーンには、ARM アーキテクチャ プログラムをクロスコンパイルするための gcc およびその他のツールが含まれており、すべて同じプレフィックスが付いています。

リーリー

ubuntuサーバー上で異なるシステムの実行可能プログラムをクロスコンパイルするにはどうすればよいですか?

実行可能プログラムのシステム アーキテクチャを表示するubuntuサーバー上で異なるシステムの実行可能プログラムをクロスコンパイルするにはどうすればよいですか?

次に、これら 2 つのプログラムをそれぞれ実行します。

ubuntuサーバー上で異なるシステムの実行可能プログラムをクロスコンパイルするにはどうすればよいですか?

現在のシステム アーキテクチャ: uname -m

ubuntuサーバー上で異なるシステムの実行可能プログラムをクロスコンパイルするにはどうすればよいですか?

通常、

gcc はシステムのデフォルトの PATH パスに従い、コンパイルに必要な対応するツール コンポーネント を見つけます。

したがって、異なるアーキテクチャでプログラムをコンパイルしたい場合は、複数のツール チェーンのセットが必要です。

これらのツール チェーンのパスをシステム環境変数 PATH に追加すると、競合が発生します ,前のパスで同じ名前のツールを使用します。たとえば、PATH は次のように設定されます: リーリー

/path/arm_toolchain/bin と /usr/bin、/path/x86_toolchain/bin にはすべて gcc という名前のツールがあります。

その後、前のものは次の を上書きし、各実行が優先されます最も古い一致する gcc ツールを使用します

欠点: 異なるアーキテクチャのコンパイル ツール チェーンを動的に指定することができず、PATH 環境変数を頻繁に変更する必要があります。

改善方法:

ツールチェーンごとに対応する環境変数を指定することで、異なるコンパイラを動的に区別できるようになります。 この方法は、ツール チェーンを一時的に切り替えたり、異なるアーキテクチャでプログラムをコンパイルしたりする場合に適しています。大規模な C プログラムの場合は、コンパイラへのパスを設定ファイルで指定し、make、meson などのビルドを使用してビルドするのが一般的です。ツール。

以上がubuntuサーバー上で異なるシステムの実行可能プログラムをクロスコンパイルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:mryunwei.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!