【问题标题】:subverion 1.8.5 compile error on mac os x 10.9 cmdline.cmac os x 10.9 cmdline.c 上的 subverion 1.8.5 编译错误
【发布时间】:2013-12-11 19:38:37
【问题描述】:

在 Mac OS X 10.9 上编译 subversion 1.8.5 时,我在尝试从源代码“制作”时遇到了这个问题。

subversion/libsvn_subr/cmdline.c:在函数“svn_cmdline_create_auth_baton”中: subversion/libsvn_subr/cmdline.c:630: error: 'SVN_AUTH_PARAM_GNOME_KEYRING_UNLOCK_PROMPT_FUNC' undeclared (首先在这个函数中使用) subversion/libsvn_subr/cmdline.c:630: error: (每个未声明的标识符只报告一次 subversion/libsvn_subr/cmdline.c:630:错误:对于它出现的每个函数。) make: * [subversion/libsvn_subr/cmdline.lo] 错误 1

我最近升级到 Xcode 5,OS 10.9 上的 Xcode 5 应该与 subversion 1.7 或 1.8 一起运行,还是没关系?

【问题讨论】:

  • “svn 命令不起作用”是什么意思?你在编译吗?无论如何尝试macports。
  • 升级到 xcode 5 后,我得到的是:svn -version dyld: Library not loaded: /usr/lib/libneon.27.dylib Referenced from: /Developer/usr/bin/svn Reason: image not found 所以路径发生了变化;我正在尝试在 mac os 10.9 上升级 svn 1.8.5,除非我正在尝试为这个版本的操作系统做一些我不应该做的事情。 Here 也是我尝试遵循的说明。
  • 你在浪费时间。这是错误的关键:/Developer/usr/bin/svn。那不是 Xcode 5。
  • 安定下来,我从来没有说过问题是 xcode 5,我想升级到 svn 1.8.5 并且我在从源代码编译时,我得到一个错误。我正在寻求解决该错误的帮助,或了解有关我做错了什么的更多信息。
  • 你能告诉我为什么你有一个/Developer 目录吗?

标签: macos svn makefile


【解决方案1】:

起初我认为这是构建 SWIG 绑定的问题。我们看到与 SWIG 绑定非常相似的问题。我的原始答案在下面带有该信息(留下它,因为有些人在查找该错误消息时可能会找到此条目)。

但是,在更仔细地查看错误时,我发现您在构建 Subversion 本身时遇到了实际问题。这是一个不同的问题。具体来说,您似乎安装了 GNOME 密钥环,并且已被配置检测到。但是,问题在于启用您遇到错误的常量的代码(检查平台)与启用该常量的常量(检查是否找到 GNOME 密钥环)之间存在不匹配。

如果您将--with-gnome-keyring=no 传递给配置,您应该能够构建。

SWIG

在 OSX 上存在与 Subversion 1.8.x 相关的已知问题。 SWIG 绑定无法使用预生成的接口正确构建。如果您安装 SWIG,您仍然可以通过执行以下操作成功构建:

make extraclean
./autogen.sh
./configure
make

如果您从新的 tarball 开始,您可以跳过 make extraclean。请注意,extraclean 将删除 config.nice 文件,因此您需要手动传递任何选项以再次配置,而不是使用 config.nice。

如果您对血腥细节感兴趣,请在此处查看有关如何解决此问题的详细信息: https://mail-archives.apache.org/mod_mbox/subversion-dev/201311.mbox/%3C528D264A.4090305%40reser.org%3E

trunk 上实际修复它的提交在这里: http://svn.apache.org/r1543961

此修复有望包含在 1.8.6 中,这样就不再是问题了。

【讨论】:

  • 太棒了!你的建议非常有效。是的,我对血腥的细节很感兴趣。在 Mac OS 系统上,有些应用需要使用 GNOME 密钥环并非闻所未闻,对吧?
  • 有可能。问题是,当我们构建公共接口时,我们不知道构建是否找到了 gnome 支持,因为我们没有 svn_private_config.h 文件(其中定义了 SVN_HAVE_GNOME_KEYRIN)。所以在 svn_auth.h 我们检查 Windows 和 Mac 并排除接口定义。整个 auth api 就是一场灾难。
猜你喜欢
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 2012-09-23
  • 2014-02-12
相关资源
最近更新 更多