3

我正在尝试编译一个使用节日库的程序。

基本上,要求是在包含路径中包含节日estools 头目录,并且包含它们的库路径。

在正常安装中,它们只是保留在自己的文件夹中,因此您有

/some/path/festival/src/include 
/some/other/path/estools/include

作为所需的搜索路径,以及

/some/path/festival/src/lib
/some/other/path/estools/lib

作为库路径。

我认为处理这个问题的正确方法是使用“--with-estools”和“--with-festival”配置选项。

但是,当它安装在 debian/ubuntu 系统上时,会有不同的设置。我希望能够处理这个设置,搜索路径在哪里

/usr/include/festival
/usr/include/estools

搜索路径只是

/usr/lib

我想检测第二种情况并自动处理它,同时如果不满足第二种情况,仍然需要用户指定前两个目录。我该怎么做?

4

3 回答 3

3

包维护者根本不需要担心这些细节;这是用户的责任。如果用户在非标准位置安装了库,则用户需要将 LDFLAGS=-L/path/to/lib 添加到 CONFIG_SITE 文件或每次调用 configure 或将该路径放在编译器的搜索路径中一些系统相关的机制。同样,用户应将 -I/path/to/include 附加到 CPPFLAGS。

换句话说,debian 通过简单地将库和头文件安装在标准位置来做正确的事情。任何选择将库安装在非标准位置的人都会给自己带来更多的工作。纠正他们的错误不是你的责任。

添加 --with-festival 或 --with-festival-headers 之类的选项没有帮助;用户可以很容易地分配给 LDFLAGS 和 CPPFLAGS,并且这些变量是标准化的。

于 2011-06-22T15:30:50.470 回答
2

有什么东西会阻止这样的设置选项吗?

  1. --festival-includes 带有默认值(如果未设置)到 /usr/include/festival

  2. --festival-libs 将默认值(如果未设置)设置为 /usr/lib/libfestival.XXX

estools 也是如此。

于 2011-06-16T22:01:30.787 回答
1

一些平台采用了文件系统层次标准 - http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

这应该真正反映在 autoconf 中,而不是坚持用户应该通过设置 CFLAGS 来处理它,因为 /opt/openssl/lib 不再是“非标准”位置。

FHS 还指定 /usr/local 是“本地数据的第三层次结构,特定于该主机”。所以可以说, /opt 真的应该首先检查。

更多关于 FHS /opt -> http://www.pathname.com/fhs/pub/fhs-2.3.html#OPTADDONAPPLICATIONSOFTWAREPACKAGES

于 2012-09-30T19:31:06.450 回答