CFLAGSとLDFLAGSを設定に追加する正しい構文は何ですか?

CFLAGSとLDFLAGSを設定に追加する正しい構文は何ですか?

OpenVPNソースtarballを使用してOpenBSD 5.5にOpenVPNをインストールしたいと思います。

指示に従ってここ、インストールする必要lzoがあり、

他の方法では見つからないので、CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" 「設定」にディレクティブを追加します。gcc

OpenBSDで上記の操作を行う方法に関するガイドをGoogleで広く検索しましたが、何もありません。

これが私がやる計画です:

  1. 新しく作成されたディレクトリにソースtarballを抽出します。
  2. 命令を出す
    ./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
    
  3. 命令を出すmake
  4. 命令を出すmake install

次のうち文法的に正しいものは何ですか?

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

または

./configure --CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

または

./configure --CFLAGS="-I/usr/local/include" --LDFLAGS="-L/usr/local/lib"

答え1

正しいアプローチは次のとおりです。

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

しかし、これはすべてのconfigureスクリプトで機能するわけではありません。CPATHなどの環境変数を設定することをお勧めします(manページLIBRARY_PATHを参照)。gcc

一例:

export CPATH=/usr/local/include
export LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib

.profile例えば、あなたの。実行パスを使用しない場合は、共有ライブラリの場合に必要になる場合がありますLD_LIBRARY_PATH(OS、ビルドツール、および使用されているオプションによって異なりますが、問題ではありません)。

答え2

最初のものは構文的に正しいです。

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

しかしそれは強くバイナリを使用することをお勧めしますpackages(7)。または何らかの理由でソースからビルドする必要がある場合は、次のインフラports(7)ストラクチャを使用してください。FAQパート15

よくある質問で説明されているようにポートツリーを設定してください。次にopenvpnポートを見つけます。

cd /usr/ports
make search key=openvpn

これにより、用語を含む複数のポートが出力されますopenvpn。そのうちの1つがopenvpn-2.3.2パスですnet/openvpn

cd net/openvpn
sudo make install clean

これの利点は、lzo2システムを損傷することなく、依存関係(ここでのみ)が正しくインストールされ、openvpnOpenBSDでそれを使用する方法に関する追加のガイドラインを得ることができることです。

答え3

それはすべて設定スクリプトによって異なります。設定スクリプトがautoconfによって生成された場合、/usr/local/libと/usr/local/includeをビルドに使用できるようにする「正しい」方法は、CONFIG_SITEを使用することです。つまり、シェル起動ファイルに CONFIG_SITE を定義し、次のようにしてすべての設定呼び出しに対して CONFIG_SITE をグローバルに作成できます。

cat > $CONFIG_SITE << EOF
CFLAGS="-I/usr/local/include $CFLAGS"
LDFLAGS="-L/usr/local/lib $LDFLAGS"
EOF

または、上記の内容を /usr/local/etc/config.site に追加して、 /usr/local をプレフィックスとして使用する設定呼び出しに対してのみ設定します。構成を使用するすべての呼び出しは、/ --prefix=/usr/localusr/local/etc/config.site(またはそのパスを使用したい場合は/usr/local/share/config.site)を読み取ります。デフォルトのプレフィックスは/usr/localなので、/usr/local/etc/config.siteを作成すると、プレフィックスのないすべての設定呼び出しが割り当てられます。

これは、autoconfによって設定スクリプトが生成された場合にのみ適用されることに注意してください。

答え4

以前に「./configure」を実行していた場合は、次のことができます。
./configure CFLAGS="-I/usr/include/libxml2/"

関連情報