我想在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.
我发布到你的其他问题的补丁修复了这个问题。在libjingle的SCons构建文件中,他们删除了linux构建的默认RPATH。我一点都不懂SCons,所以我不知道它是怎么进来的。我注意到linux版本删除了默认值,所以我为OS X版本删除了它,这似乎有效。虽然对于OS X来说,ld应该接受一个rpath参数,但我认为它不应该在rpath和实际路径之间有一个等号。这就是为什么它可能会失败,但你根本不需要设置它。但是,我还没有运行单元测试,以知道删除rpath参数是否会导致运行时问题。至少现在可以编译了
将此代码添加到您的主程序中。
# Remove default rpath set by Hammer. Hammer sets it to LIB_DIR, which is wrong.
mac_env.Replace(
RPATH = [],
)
谢谢。凯恩。