CFLAGSおよびLDFLAGSを「configure」に追加する正しい構文は何ですか?


40

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

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

CFCC = "-I / usr / local / include" LDFLAGS = "-L / usr / local / lib"ディレクティブを "configure"に追加します。そうしないと、gccはそれらを見つけられません。

OpenBSDで上記のことを行う方法についてのガイドをグーグルで探しましたが、何もありません。

これは私がやろうとしていることです:

  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"

回答:


41

正しい方法は次のとおりです。

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

ただし、これはすべてのconfigureスクリプトで機能するとは限りません。CPATHand などの環境変数を設定することをお勧めしますLIBRARY_PATHgccmanページを参照)。

例:

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

あなたの中に.profile、例えば。LD_LIBRARY_PATH実行パスが使用されていない場合は、共有ライブラリの場合に必要になることができます(これはOSに依存し、ビルドツールと使用されているオプションが、それは傷つけるべきではありません)。


ご回答有難うございます。gccはOpenBSD 5.5の基本システムにデフォルトでインストールされていますか?そうでなければ、バグやセキュリティの脆弱性が含まれている可能性があるため、サードパーティのパッケージをインストールしません。
user66229 14

1
@ user66229デフォルトのインストールを行った場合は、はいgcc-4.2.1(vaxenのような本当に古いマシンを使用している場合を除き)はにありcomp55.tgzます。gcc-4.8および4.9、およびのパッケージがありますllvm/clang 3.0。前者は主にライセンス上の理由で含まれていません(GPLv2対GPLv3)、後者はOpenBSDが現在サポートしているすべてのプラットフォームをサポートしていないため使用されません。
ダミアン14

1
@ user66229回答を編集しました。これは単なる例であり、他の方法があり、すでにいくつかの設定があるかもしれません。などで最初に確認してくださいecho $CPATH
vinc17 14

1
「しかし、これはすべてのconfigureスクリプトで動作しない可能性があります」コメントに感謝します-CFLAGSで指定されたいくつかの依存関係の後、CFLAGSが指定されると最後の依存関係がクラッシュする(そして実際にgrep CFLAGS configureそのconfigureスクリプトから空白を返す)場合に遭遇しました。
sdaau

1
xahlee.info/UnixResource_dir/_/ldpath.htmlには非常に注意しLD_LIBRARY_PATHます。
スカリー

8

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

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

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

FAQで説明されているように、ポートツリーをセットアップします。次に、openvpnポートを探します:

cd /usr/ports
make search key=openvpn

これにより、用語を含む多数のポートが出力されますopenvpn。それらの1つはopenvpn-2.3.2path net/openvpnです。

cd net/openvpn
sudo make install clean

これには、lzo2システムを破壊することなく依存関係(ここのみ)が適切にインストールされopenvpn、OpenBSDでの使用方法に関する追加の指示が得られるという利点があります。


ご回答有難うございます。OpenBSD 5.5にはすでにOpenVPN(バイナリ)パッケージがありますが、バージョン2.3.2では古いです。OpenVPNのGitHubからのみ入手可能な最新バージョン2.3.4をコンパイルしてインストールしたいと思います。
user66229 14

lzoについて述べたように、lzo-1.08p3.tgz、lzo2-2.06p0.tgz、lzop-1.03.tgzの3つのバイナリパッケージがあることに気付きました。これら3つのうちどれがOpenVPNの依存関係ですか?
user66229 14

1
@ user66229:それはになりますlzo2-2.06p0.tgz。ここだパッチのポートアップグレードopenvpnから2.3.2には2.3.4、しかし、間のOpenBSDに関連するほとんど変更がある2つのバージョンが(スレッド全体を読んで)。私はでしょう本当に、本当にあなただけのバイナリパッケージと一緒に行くことをお勧めします。
ダミアン14

@damien回答とパッチへのリンクをありがとう。パッチの内容を読みましたが、心配したのは、OpenVPNのOpenBSDにメンテナーがいないという事実です。バイナリパッケージopenvpn-2.3.2.tgzがOpenBSDの公式ダウンロードミラーにどのように移行したかについての答えを推測するのを手伝ってください。
user66229 14

1
@ user66229 ここでは、ポートのMakefileの改訂リスト全体を見ることができます。そのスレッドでStuart Henderson(メインパッケージメンテナーの1人)が言ったように、実際にはこれらの変更の多くはOpenBSDに関連していません。
ダミアン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.