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

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

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

根据说明这里,我必须安装lzo并且

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

我在 google 上广泛搜索了有关如何在 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"

答案1

正确的做法是:

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

但这可能不适用于所有configure脚本。最好设置环境变量,例如CPATHLIBRARY_PATH(参见gcc手册页)。

一个例子:

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

.profile例如,在您的 中。如果不使用运行路径,则在共享库的情况下可能LD_LIBRARY_PATH需要(这取决于操作系统、构建工具和使用的选项,但不会有什么坏处)。

答案2

第一个语法是正确的。

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

然而,它是强烈地建议使用二进制文件packages(7),或者,如果出于某种原因您绝对需要从源代码构建,请使用基础ports(7)设施,如常见问题解答第 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 上使用的附加说明。

答案3

这完全取决于配置脚本。如果配置脚本是由 autoconf 生成的,那么确保在构建中使用 /usr/local/lib 和 /usr/local/include 的“正确”方法是使用 CONFIG_SITE。也就是说,可以通过在 shell 启动文件中定义 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 作为前缀的配置调用设置它。任何使用configure 的调用--prefix=/usr/local都将读取/usr/local/etc/config.site(或/usr/local/share/config.site,如果您更喜欢使用该路径)。由于默认前缀是 /usr/local,因此创建 /usr/local/etc/config.site 将导致对任何未定义前缀的 configure 调用进行分配。

再次注意,这仅适用于配置脚本由 autoconf 生成的情况。

答案4

如果您之前要运行“./configure”以使您可以执行以下操作:
./configure CFLAGS="-I/usr/include/libxml2/"

相关内容