所以我试图在 OS X 10.9 Mavericks 上构建 Erlang/OTP 18.3,并且似乎遇到了找不到 odbc 库/头文件的问题。
第一次尝试跑步时,configure
我收到了以下消息:
*********************************************************************
********************** APPLICATIONS DISABLED **********************
*********************************************************************
odbc : ODBC library - header check failed
我去寻找有关 OS X 上的 ODBC 库的任何信息,并找到了一个较早的问题/答案,其中指出“自从 OS X 10.9 (Mavericks) Apple 停止包含 iODBC SQL 头文件”,这表明这可能是关键问题.
所以我从 iodbc.org 获取了 libiodbc,构建了 OS X 版本,然后再次尝试:
odbc : ODBC library - header check failed
嗯。好的,显然为 OS X 构建会将库/头文件默认放入 /Library/Frameworks 中。也许OTP的配置过程不知道看那里?所以我尝试再次构建 libiodbc,这次使用 --prefix=/usr/local。和:
odbc : ODBC library - header check failed
我可以验证 /usr/local/include 包含 iodbcext.h、iodbcunix.h、isqlext.h、sql.h、sqltypes.h、iodbcinst.h、isql.h、isqltypes.h、odbcinst.h、sqlext.h , sqlucode.h,所以看起来头文件应该是可发现的。
我四处寻找有关 erlang-questions 邮件列表中有关 odbc 和构建的任何早期讨论,并发现一条旧消息表明配置过程有时无法识别 OS X 上的 iodbc 搜索......但快速检查erlang 源代码目录下的 lib/odbc/configure.in似乎显示了该消息中建议的补丁已折叠,这应该不再是问题。
我错过了什么?有没有另一种方法来告诉配置它应该在哪里寻找 libiodbc?还需要什么吗?
做不到这一点——我可以以某种方式调试/更改配置过程吗?
编辑
在@legoscia 的建议下,我偷看了里面lib/odbc/config.log
。里面有很多内容,所以我将链接完整文件而不是发布它,但有两个错误似乎相关:
conftest.c:29:10: fatal error: 'sql.h' file not found
...
conftest.c:29:10: fatal error: 'sqlext.h' file not found
这很奇怪,因为正如我之前所说,我可以验证 /usr/local/include 是否包含这些文件。我正在使用--with-odbc=/usr/local
. 稍后在 config.log 的Output Variables
标题下,它还指定它 know ODBC_INCLUDE='-I/usr/local/include'
。它似乎知道在哪里看,文件在那个位置,但有些东西看不到它们。