我希望使用 OpenVPN 源 tarball 在 OpenBSD 5.5 上安装 OpenVPN。
根据说明这里,我必须安装lzo
并且
将指令添加
CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
到“配置”,因为gcc
否则找不到它们。
我在 google 上广泛搜索了有关如何在 OpenBSD 上执行上述操作的指南,但没有。
这就是我打算做的:
- 将源 tarball 解压到新创建的目录
- 发出命令
./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
- 发出命令
make
- 发出命令
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
和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
需要(这取决于操作系统、构建工具和使用的选项,但不会有什么坏处)。
答案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/"