我最近下载了APR并在我的机器上成功构建了它(Ubuntu 12.0.4)。我将/path/path/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
(幼稚?)解决方案将是定义这些变量 - 但是我不确定使用错误的大小是否会有任何令人讨厌的效果 - 我不确定编译器指令定义的正确尺寸是否正确。<<<<<<<<<<<<<<
为什么./configure无法正确确定我的平台(Ubuntu 12.0.4),我该如何修复?
在Linux上,PATH_MAX
应在<linux/limits.h>
中定义。在APR之前包含它,它应该解决您的问题:
#include <linux/limits.h>
#include <path/to/apr_file_info.h>
请注意,包括标准标头<limits.h>
标头还应包括<linux/limits.h>
或POSIX Systems上的相关标头。
窗口上的等效物将是MAX_PATH
,如果我没记错的话,在<windef.h>
中定义。
我最近遇到了这个问题。惊讶的是,需要在Linux上使用的APR标头不包含Linux/limits.h直接使用依赖项。肯定是好的编程练习?
定义符号_XOPEN_SOURCE
可能会解决此问题,例如CPPFLAGS='-D_XOPEN_SOURCE=700
请注意,有些程序不符合CPPFLAGS,因此您必须将其添加到Cflags中;tomcat-native就是一个例子:编译时,您可以编辑文件native/scripts/build/rules.mk
:
- COMPILE = $(CC) $(CFLAGS)
+ COMPILE = $(CC) $(CFLAGS) $(CPPFLAGS)