CFLAGS 環境変数を変更せずに 64 ビット Linux マシン上で 32 ビット バイナリをコンパイルする方法

StackOverflow https://stackoverflow.com/questions/1673389

質問

の解決策

gcc/cmake を使用して 64 ビット Linux マシン上で 32 ビットバイナリをコンパイルする方法

すでにCFLAGS変数を使用しているサードパーティソフトウェアやその他のものを使用しているため、これは不可能です。そして、メイクファイルにパッチを適用することは許可されていません - 私の上司は言います。

したがって、それを強制する別の方法を見つける必要があります。gcc への呼び出しを 32 ビット バージョンのコンパイラにリダイレクトするシンボリック リンクを使用した魔法かもしれません (デフォルトのターゲットが動的に検出されないことを願っています)。

役に立ちましたか?

解決

ご使用の環境では CFLAGS を変更することは許可されていませんが、ビルドのために一時的に CFLAGS をオーバーライドできない理由はありますか?

autotool ベースのパッケージの場合は、まず次のことを試します。

CFLAGS="-m32" ./configure [opts]
make
make install

よく書かれた configure.ac ファイルは、パッケージ ソースを変更することなく、CFLAGS 変数を尊重してそれに追加する必要があります。

アップデート

したがって、CC 変数も再定義できないと仮定して、パスのトリックをいくつか試してみます。でシェルスクリプトを作成します ${HOME}/gcc32 呼ばれた gcc 以下のものとなります (未テスト):

#!/bin/sh
/usr/bin/gcc -m32 "$@"

32 ビットをビルドする場合は、これをパスの先頭に追加します。

export PATH=${HOME}/gcc32:${PATH}

明らかな変更はサポートされます g++, icc, 、または他のコンパイラ。

他のヒント

のは、gccと友人が「は/ usr / binに」に位置していると仮定しましょう。私たちはまた、あなたのパスにある「〜/ .localの/ binに」という名前のフォルダを持っていると仮定しましょう。

:あなたのような "〜/ .localの/ binに" の "GCC" という名前のbashスクリプトを作成することができます
#! /bin/bash
/usr/bin/gcc -m32 $@
次のように

あなたは同様に、コンテンツと「G ++」スクリプトを作成することができます:

#! /bin/bash
/usr/bin/g++ -m32 $@

基本的には、必要に応じてなど、 "LD"、 "と" "C ++"、 "CC"、のためにこれをやり続けます。スクリプトが実行可能にします。 "〜/ .localの/ binが" "は/ usr / binに" 前に、PATH環境変数に含まれていることを確認してください。その場合は、メイクファイルはコンパイラを呼び出すときに、その後、(彼らは相対パスを使用すると仮定すると)、スクリプトではなく、呼び出されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top