用APR编译。错误消息:“尚未对您的平台的APR_PATH_MAX做出任何决定”

时间:2012-12-27 11:58:12

标签: c apr

我最近下载了APR,并在我的机器上成功构建了它(Ubuntu 12.0.4)。 我将/path/to/apr_file_info.h包含到我的项目中,当我尝试编译时,收到以下错误消息:

no decision has been made on APR_PATH_MAX for your platform

在调查头文件(apr.h)后,我发现以下指令负责:

#if defined(PATH_MAX)
#define APR_PATH_MAX       PATH_MAX
#elif defined(_POSIX_PATH_MAX)
#define APR_PATH_MAX       _POSIX_PATH_MAX
#else
#error no decision has been made on APR_PATH_MAX for your platform
#endif

(天真?)解决方案是定义这些变量 - 但我不确定使用错误的大小是否会产生任何令人讨厌的影响 - 我不确定为编译器指令定义的正确大小。 / p>

为什么./configure无法正确确定我的平台(Ubuntu 12.0.4),我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

在Linux上,PATH_MAX应在<linux/limits.h>中定义。在APR之前加入它,它应该解决您的问题:

#include <linux/limits.h>
#include <path/to/apr_file_info.h>

请注意,包含标准标头<limits.h>标头还应包含<linux/limits.h>或POSIX系统上的相关标头。

如果我没记错的话,Windows上的等效内容为MAX_PATH,在<windef.h>中定义。

答案 1 :(得分:0)

我最近遇到过这个问题。令人惊讶的是,需要在Linux上使用的APR头不直接包含linux / limits.h,如果这是一个依赖。肯定是好的编程实践吗?

答案 2 :(得分:0)

定义符号_XOPEN_SOURCE可能会解决此问题,例如CPPFLAGS='-D_XOPEN_SOURCE=700

请注意,有些程序不尊重CPPFLAGS,因此您必须将其添加到CFLAGS; tomcat-native就是一个例子:编译时你可以编辑文件native/scripts/build/rules.mk

- COMPILE      = $(CC) $(CFLAGS)
+ COMPILE      = $(CC) $(CFLAGS) $(CPPFLAGS)