多くの C プログラマーは「サーバーの gcc バージョンが異なる場合はどうなるのですか? 相互に影響を及ぼしますか?」という疑問を抱いたことがあると思います。
答えは「はい」です。通常、gcc を使用してソース ファイルをコンパイルする場合、この gcc はシステム環境変数 PATH で最初に見つかる gcc です。
異なるシステム用にプログラムをクロスコンパイルしたい場合はどうすればよいでしょうか?これには、複数のコンパイル ツール チェーンのセットが必要であり、対応するツール チェーンを使用してターゲット システムのプログラムをコンパイルします。
/usr/bin
ディレクトリに配置されます。 /usr/include
に配置され、標準ライブラリのヘッダー ファイルは通常、/usr/local/include
に配置されます。 /usr/lib
および /lib
に配置され、静的ライブラリは通常、ここまたは /usr/local/lib に配置されます。 ###。
/usr/bin はすでに
PATH 環境変数に含まれているはずなので、通常はコンパイラ パスの環境変数を変更する必要はありません。別のコンパイラを使用する必要がある場合は、その完全パスを直接使用するか、
PATH 環境変数を変更してコンパイラを指すようにすることができます。例:
リーリー
PATH の前に追加され、システムは最初にここで実行可能ファイルを検索します。
リーリー
実行可能プログラムのシステム アーキテクチャを表示する
次に、これら 2 つのプログラムをそれぞれ実行します。
現在のシステム アーキテクチャ: uname -m
通常、
gcc はシステムのデフォルトの PATH パスに従い、コンパイルに必要な対応するツール コンポーネント を見つけます。
これらのツール チェーンのパスをシステム環境変数 PATH に追加すると、競合が発生します ,前のパスで同じ名前のツールを使用します。たとえば、PATH は次のように設定されます:
リーリー
その後、前のものは次の を上書きし、各実行が優先されます
最も古い一致する gcc ツールを使用します。
改善方法:
ツールチェーンごとに対応する環境変数を指定することで、異なるコンパイラを動的に区別できるようになります。
この方法は、ツール チェーンを一時的に切り替えたり、異なるアーキテクチャでプログラムをコンパイルしたりする場合に適しています。大規模な C プログラムの場合は、コンパイラへのパスを設定ファイルで指定し、make、meson などのビルドを使用してビルドするのが一般的です。ツール。
以上がubuntuサーバー上で異なるシステムの実行可能プログラムをクロスコンパイルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。