【问题标题】:Link error when build libjingle on Mac OS X 10.7.2在 Mac OS X 10.7.2 上构建 libjingle 时出现链接错误
【发布时间】:2012-04-06 14:24:20
【问题描述】:

我想在 Mac OS X 10.7.2 上构建 libjingle。我刚刚克服了编译器错误并现在遇到了链接器错误。路径/Developer/libjingle/libjingle-0.6.3/talk/build/dbg/lib 存在,但系统显示未知。如何修复它并让 libjingle 真正起作用?

MBP17:talk rei25$ /Developer/swtoolkit/hammer.sh
scons: Reading SConscript files ...

scons: warning: The build_dir keyword has been deprecated; use the variant_dir keyword instead.
File "/Developer/swtoolkit/site_scons/site_init.py", line 203, in BuildEnvironmentSConscripts
scons: done reading SConscript files.
scons: Building targets ...
scons: `all_libraries' is up to date.
________Linking build/dbg/obj/login
ld: unknown option: -rpath=/Developer/libjingle/libjingle-0.6.3/talk/build/dbg/lib
collect2: ld returned 1 exit status
scons: *** [build/dbg/obj/login] Error 1
scons: building terminated because of errors.

【问题讨论】:

    标签: macos linker-errors rpath libjingle


    【解决方案1】:

    我发布到您的另一个question 的补丁也解决了这个问题。在 libjingle 的 SCons 构建文件中,他们删除了 linux 构建的默认 RPATH。我根本不知道 SCons,所以我不确定它是如何进入那里的。我注意到 linux 构建删除了默认值,所以我为 OS X 构建删除了它,这似乎有效。尽管 OS X 的 ld 假设采用 rpath 参数,但我相信它不应该在 rpath 和实际路径之间具有等号。所以这就是为什么它可能会失败,但是你根本不需要设置它。但是,我还没有运行单元测试,不知道删除 rpath 参数是否会导致运行时问题。至少现在可以编译了。

    【讨论】:

      【解决方案2】:

      将此代码添加到您的 main.scons 中,如下所示:

      # Remove default rpath set by Hammer. Hammer sets it to LIB_DIR, which is wrong.   
      mac_env.Replace(
        RPATH = [],
      )   
      

      谢谢。 凯恩。

      【讨论】:

      • 这已经出现在我的 main.scons 中,但仍然出现相同的错误。
      最近更新 更多