我尝试在从 10.7 升级后让 Passenger 在 Mountain Lion 上运行,但在运行时遇到问题passenger-install-apache2-module
:
g++ ext/apache2/HelperAgent.cpp -o agents/apache2/PassengerHelperAgent -Iext -Iext/common -D_REENTRANT -I/usr/local/include -DHASH_NAMESPACE="__gnu_cxx" -DHASH_FUN_H="<ext/hash_fun.h>" -DHAS_ALLOCA_H -DHAS_SFENCE -DHAS_LFENCE -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -g -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS ext/common/libpassenger_common.a ext/common/libboost_oxt.a -lpthread
Undefined symbols for architecture x86_64:
"_regcompA", referenced from:
Passenger::FilterSupport::Filter::Value::Value(bool, Passenger::StaticString const&, bool)in libpassenger_common.a(aggregate.o)
Passenger::FilterSupport::Filter::Value::initializeFrom(Passenger::FilterSupport::Filter::Value const&)in libpassenger_common.a(aggregate.o)
"_regexecA", referenced from:
Passenger::FilterSupport::Filter::Comparison::compareStringOrRegexp(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Passenger::FilterSupport::Context const&)in libpassenger_common.a(aggregate.o)
"_regfreeA", referenced from:
Passenger::FilterSupport::Filter::Value::freeStorage() in libpassenger_common.a(aggregate.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
rake aborted!
Command failed with status (1): [g++ ext/apache2/HelperAgent.cpp -o agents/...]
所有必需的软件检查均已通过。
我已经按照建议安装了 PCRE 标头Phusion 博客文章,尽管这有点冒险,因为它针对的是 Nginx 问题。
有人有什么想法吗?
谢谢,格里夫
答案1
这是与 PCRE 问题不同的一个问题。Phusion Passenger 使用来自 POSIX 标准的正则表达式函数。
乍一看,这个错误似乎暗示 OS X 10.8 不支持 POSIX 正则表达式函数。但这是一个非常奇怪的结论,因为:
- 10.6 和 10.7 很好地支持它们。
- 头文件 regex.h 可用,否则您将收到有关 regex.h 丢失的编译器错误,而不是此链接器错误。
- 甚至苹果声称正式支持它。
目前我唯一能得出的结论是,要么你的系统坏了,要么 OS X 10.8 坏了。我现在正在度假,到欧洲和美国的 ping 时间超过 1000 毫秒,而且我没有 OS X 10.8,所以我现在无法进一步分析问题。因此,我可以给你的短期建议是:
- 重新安装系统。
- 联系 Apple 获取支持。