在 Solaris 10 上编译 quickfix

Posted

技术标签:

【中文标题】在 Solaris 10 上编译 quickfix【英文标题】:compiling quickfix on Solaris 10 【发布时间】:2014-09-06 12:19:40 【问题描述】:

我一直在尝试在 Solaris 10 机器上编译 quickfix。但是,当我尝试运行 bootstrap 时,它会在失败之前给出大量警告形式为“警告:AM_PATH_AUDIOFILE 的引用不足定义”:

aclocal: macro `_LT_DECL_SED' required but not defined
aclocal: macro `_LT_FUNC_STRIPNAME_CNF' required but not defined
configure.ac: 92: macro `AM_PATH_XML2' not found in library'

我相当肯定这是一个路径问题,如果我运行aclocal,它会以同样的方式失败,并且找不到 AM_PATH_XML2,但如果我运行aclocal -I /usr/local/share/aclocal/,它会成功,尽管我的定义警告被低估了假设可以忽略。出于某种原因,Solaris 似乎将 libxml.m4 放在 /usr/local/share/aclocal 而不是大多数其他 .m4 文件所在的位置。

如何将此路径传递给 bootstrap 调用的 autoreconf?使用包含路径运行 autoreconf 不起作用。

【问题讨论】:

可能是你运行的automake太旧了。这是什么版本? autoreconf --version 提供 autoreconf (GNU Autoconf) 2.59 这似乎有十年的历史了。如果可以的话,试试更新的。 2.69 似乎是最新的(尽管它是在两年前发布的)。 好的。尝试使用 2.68 版完全没有区别 AM_PATH_XML2 问题将随着符号链接而消失 - 这是我宁愿解决的路径问题。其他两个我无法解决的宏观问题 automake 的哪个版本?该线程说 1.11 修复了您遇到的宏问题(至少对于海报而言):curl.haxx.se/mail/lib-2011-05/0286.html 【参考方案1】:

如 automake 手册的Using autoreconf to Update configure Scripts 部分所述,您可以使用ACLOCAL 环境变量指定要传递给aclocal 的标志,例如

env ACLOCAL='aclocal -I /usr/local/share/aclocal/' autoreconf

【讨论】:

【参考方案2】:

到了

问题在于软件包的版本,特别是 m4 太旧,但似乎除非在 autoconf 之前更新 m4,否则 autom4te 会调用一个太旧的 m4 版本造成问题。应用 m4 包后重新应用 autoconf 包解决了这个问题。

编辑

我必须安装才能编译的软件包列表 库工具 m4 自动化 sed (显然这是安装的,但 libtools 期望在 usr/local/bin 而不是 usr/bin 中。如果不安装这个 gmake 会启动 7000 个 libtools 副本,这似乎具有 sed 硬编码的路径,直到 fork 失败) perl(再次 usr/ local/bin vs usr/bin 之后只是导出 LD_LIBRARY_PATH 的问题。另外,安装 sed 后需要重新运行 bootstrap 和 configure,或者 gmake 启动了 7000 个 libtools 副本

配置后编辑 makefile 并删除标志 -Wno-unused-private-field 和 gmake 实际工作

【讨论】:

以上是关于在 Solaris 10 上编译 quickfix的主要内容,如果未能解决你的问题,请参考以下文章

在 Solaris 10 系统上编译并使用SQLite-3.4.2

在 Solaris 10 系统上编译并使用SQLite-3.4.2

在 Solaris 10 系统上编译并使用SQLite-3.4.2

Erlang/OTP 无法在 Solaris 11 11/11 上编译

Solaris 10 SPARC 64 上的 Protobuf-2.6.1 编译错误

无法在 Windows 10 上编译 Cairo C 代码