将CFLAGS和LDFLAGS添加到“配置”中的正确语法是什么?


40

我希望使用OpenVPN源tarball在OpenBSD 5.5上安装OpenVPN。

根据此处的说明,我必须安装lzo和

将CFLAGS =“-I / usr / local / include” LDFLAGS =“-L / usr / local / lib”指令添加到“配置”中,因为gcc否则找不到它们。

我已经在Google上广泛搜索以获取有关如何在OpenBSD上执行上述操作的指南,但没有任何指南。

我打算这样做:

  1. 将源压缩文件解压缩到新创建的目录中
  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"

Answers:


41

正确的方法是:

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

但这可能不适用于所有configure脚本。最好设置环境变量,例如CPATHand 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可需要共享库的情况下,如果不使用运行路径(这取决于操作系统,构建工具和所使用的选项,但它不应该伤害)。


感谢您的回答。默认情况下,gcc是否安装在OpenBSD 5.5的基本系统中?如果不是,我将不安装第三方软件包,因为它可能包含错误或安全漏洞。
user66229 2014年

1
@ user66229如果您执行了默认安装,则可以gcc-4.2.1(除非您使用的是像vaxen这样的旧机器)comp55.tgz。有gcc-4.84.9和的软件包llvm/clang 3.0。主要由于许可原因(GPLv2与GPLv3)未包括前者,而未使用后者是因为它不支持OpenBSD当前支持的所有平台。
达米安

1
@ user66229我已经编辑了答案。这只是一个示例,可能还有其他方法可以执行,并且您可能已经有一些设置。首先检查echo $CPATH,依此类推。
vinc17 2014年

1
感谢您的“但是这可能不适用于所有配置脚本”注释-我只是遇到一种情况,在使用CFLAGS编译了几个依赖项之后,当指定CFLAGS时,最后一个依赖项崩溃了(实际上,grep CFLAGS configure从该配置脚本返回空白) 。
sdaau

1
我会非常小心LD_LIBRARY_PATHxahlee.info/UnixResource_dir/_/ldpath.html
skalee

8

第一种语法是正确的。

./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。其中之一就是openvpn-2.3.2道路net/openvpn

cd net/openvpn
sudo make install clean

这样的好处是lzo2可以正确安装依赖项(仅在此处)而不会破坏系统,并且您会获得有关如何openvpn在OpenBSD 上使用的更多说明。


感谢您的回答。OpenBSD 5.5已经具有一个OpenVPN(二进制)软件包,但是它的版本为2.3.2。我希望编译并安装最新版本2.3.4,该版本仅可从OpenVPN的GitHub获得。
user66229 2014年

正如您提到的lzo一样,我注意到有三个可用的二进制软件包:lzo-1.08p3.tgz,lzo2-2.06p0.tgz和lzop-1.03.tgz。这3个中的哪一个是OpenVPN的依存关系?
user66229 2014年

1
@ user66229:应该是lzo2-2.06p0.tgz。这里有一个补丁是升级的端口openvpn2.3.22.3.4,但几乎没有一个OpenBSD相关之间变化的两个版本(读取整个线程)。我真的真的建议您只使用二进制包。
达米安

@damien感谢您的回答和补丁的链接。我阅读了补丁的内容,让我担心的是,OpenBSD中没有用于OpenVPN的维护者。请帮我猜猜答案,关于二进制包如何openvpn-2.3.2.tgz进入OpenBSD的官方下载镜像?
user66229

1
@ user66229 在这里,您可以看到端口的Makefile的完整修订列表。正如Stuart Henderson(主要的软件包维护者之一)在该线程中所说的那样,这些更改实际上与OpenBSD无关。
达米安
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.