在Xcode 4.2上编译pjsip的问题

9

当我在Xcode 4.2上运行我的项目时,我得到了这种回应,显示缺少31个.o文件的错误。

而这31个错误看起来像这样:

ld: warning: ignoring file ../pjproject-svn/pjlib/lib/libpj-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/pjlib-util/lib/libpjlib-util-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/pjnath/lib/libpjnath-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/pjmedia/lib/libpjmedia-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/pjsip/lib/libpjsip-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/pjsip/lib/libpjsip-simple-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/pjsip/lib/libpjsip-ua-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/pjsip/lib/libpjsua-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/pjmedia/lib/libpjmedia-codec-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/third_party/lib/libgsmcodec-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/pjmedia/lib/libpjmedia-audiodev-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/third_party/lib/libresample-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../pjproject-svn/third_party/lib/libg7221codec-arm-apple-darwin9.a, file was built for archive which is not the architecture being linked (armv7)
Undefined symbols for architecture armv7:
  "_pjsua_call_get_count", referenced from:
      -[SiphonApplication processCallState:] in SiphonApplication.o
      -[SiphonApplication callDisconnecting] in SiphonApplication.o
      -[CallViewController processCall:] in CallViewController.o
  "_pjmedia_tonegen_play_digits", referenced from:
      _sip_call_play_digits in dtmf.o
  "_pjsua_acc_get_info", referenced from:
      _on_reg_state in call.o
  "_pjsua_perror", referenced from:
      _sip_connect in call.o
      _sip_dial_with_uri in call.o
      _call_init_tonegen in dtmf.o
  "_pjsua_conf_disconnect", referenced from:
      _sip_ring_stop in ring.o
  "_pjsua_call_is_active", referenced from:
      -[CallViewController findNextCall] in CallViewController.o
  "_pj_pool_calloc", referenced from:
      _sip_call_play_digits in dtmf.o
      _pj_pool_zalloc in dtmf.o
  "_pjsua_acc_is_valid", referenced from:
      _sip_disconnect in call.o
  "_pjsua_call_reinvite", referenced from:
      -[CallViewController setHoldEnabled:] in CallViewController.o
  "_pjsua_media_config_default", referenced from:
      _sip_startup in call.o
  "_pjsua_create", referenced from:
      _sip_startup in call.o
  "_pjsua_acc_add", referenced from:
      _sip_connect in call.o
  "_pjsua_acc_config_default", referenced from:
      _sip_connect in call.o
  "_pj_log_get_level", referenced from:
      _sip_startup in call.o
      _on_call_state in call.o
      _on_incoming_call in call.o
      _on_mwi_info in call.o
      _sip_connect in call.o
      _sip_dial_with_uri in call.o
      _sip_manage_codec in call.o
      ...
  "_pjsua_call_set_user_data", referenced from:
      _call_init_tonegen in dtmf.o
      _sip_call_deinit_tonegen in dtmf.o
  "_pjsua_conf_connect", referenced from:
      _on_call_media_state in call.o
      _sip_ringback_start in ring.o
      _call_init_tonegen in dtmf.o
  "_pjsua_call_get_user_data", referenced from:
      _sip_call_play_digits in dtmf.o
      _sip_call_deinit_tonegen in dtmf.o
  "_pjsua_call_dial_dtmf", referenced from:
      _sip_call_play_digits in dtmf.o
  "_pjsua_pool_create", referenced from:
      _sip_startup in call.o
      -[CallViewController createCall:] in CallViewController.o
      _call_init_tonegen in dtmf.o
  "_pjmedia_tonegen_play", referenced from:
      _sip_ring_init in ring.o
  "_pj_pool_release", referenced from:
      _sip_cleanup in call.o
      -[CallViewController createCall:] in CallViewController.o
      _call_init_tonegen in dtmf.o
      _sip_call_deinit_tonegen in dtmf.o
  "_pj_get_version", referenced from:
      _sip_startup in call.o
  "_pjsua_call_hangup", referenced from:
      _sip_hangup in call.o
  "_pjsua_msg_data_init", referenced from:
      _sip_call_play_info_digits in dtmf.o
  "_pj_strdup_with_null", referenced from:
      -[CallViewController createCall:] in CallViewController.o
  "_pj_rand", referenced from:
      _sip_startup in call.o
  "_pjsua_media_transports_create", referenced from:
      _sip_startup in call.o
  "_pjsua_destroy", referenced from:
      _sip_cleanup in call.o
  "_pj_strerror", referenced from:
      -[SiphonApplication displayStatus:withTitle:] in SiphonApplication.o
  "_pjsua_verify_sip_url", referenced from:
      -[SiphonApplication application:handleOpenURL:] in SiphonApplication.o
      _sip_connect in call.o
      _sip_dial_with_uri in call.o
  "_pjsua_call_send_request", referenced from:
      _sip_call_play_info_digits in dtmf.o
  "_pjsua_call_get_max_count", referenced from:
      -[CallViewController findNextCall] in CallViewController.o
  "_pj_strdup2_with_null", referenced from:
      _sip_startup in call.o
      -[CallViewController createCall:] in CallViewController.o
  "_pjmedia_tonegen_stop", referenced from:
      _sip_call_play_digits in dtmf.o
  "_pjsua_acc_del", referenced from:
      _sip_disconnect in call.o
  "_pjmedia_port_destroy", referenced from:
      _sip_ring_deinit in ring.o
      _sip_call_deinit_tonegen in dtmf.o
  "_pjsua_transport_config_default", referenced from:
      _sip_startup in call.o
  "_pjsua_conf_adjust_rx_level", referenced from:
      -[CallViewController setMute:] in CallViewController.o
  "_pjsua_codec_set_priority", referenced from:
      _sip_manage_codec in call.o
  "_pjmedia_tonegen_create2", referenced from:
      _sip_ring_init in ring.o
  "_pjsua_logging_config_default", referenced from:
      _sip_startup in call.o
  "_pjmedia_tonegen_create", referenced from:
      _call_init_tonegen in dtmf.o
  "_pjsua_call_make_call", referenced from:
      _sip_dial_with_uri in call.o
  "_pjsua_transport_create", referenced from:
      _sip_startup in call.o
  "_pj_strdup3", referenced from:
      _sip_startup in call.o
  "_pj_pool_alloc", referenced from:
      _sip_connect in call.o
  "_pjsip_parse_uri", referenced from:
      -[CallViewController createCall:] in CallViewController.o
  "_pj_str", referenced from:
      _sip_connect in call.o
      _sip_dial_with_uri in call.o
      _sip_ring_init in ring.o
      -[CallViewController composeDTMF] in CallViewController.o
      _sip_call_play_digit in dtmf.o
      _sip_call_play_info_digit in dtmf.o
      _sip_call_play_info_digits in dtmf.o
      ...
  "_pjsua_init", referenced from:
      _sip_startup in call.o
  "_pj_log_1", referenced from:
      _sip_startup in call.o
      _on_call_state in call.o
      _on_incoming_call in call.o
      _sip_connect in call.o
      _sip_dial_with_uri in call.o
      _sip_manage_codec in call.o
  "_pjsua_call_get_info", referenced from:
      _on_call_state in call.o
      _on_call_media_state in call.o
      _on_incoming_call in call.o
      -[CallViewController timeout:] in CallViewController.o
      _call_init_tonegen in dtmf.o
  "_pj_log_3", referenced from:
      _on_mwi_info in call.o
  "_pjsua_conf_remove_port", referenced from:
      _sip_ring_deinit in ring.o
      _sip_call_deinit_tonegen in dtmf.o
  "_pjsua_config_default", referenced from:
      _sip_startup in call.o
  "_pj_log_5", referenced from:
      _sip_dial_with_uri in call.o
  "_pjsua_conf_add_port", referenced from:
      _sip_ring_init in ring.o
      _call_init_tonegen in dtmf.o
  "_pjsip_get_status_text", referenced from:
      -[SiphonApplication application:handleOpenURL:] in SiphonApplication.o
      -[SiphonApplication dialup:number:] in SiphonApplication.o
  "_pjsua_call_set_hold", referenced from:
      -[CallViewController setHoldEnabled:] in CallViewController.o
      -[CallViewController buttonClicked:] in CallViewController.o
  "_pjsua_start", referenced from:
      _sip_startup in call.o
  "_pjsua_call_answer", referenced from:
      _on_incoming_call in call.o
      _sip_answer in call.o
  "_pjmedia_tonegen_rewind", referenced from:
      _sip_ring_stop in ring.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Ld Build/Siphon/Build/Products/Debug-iphoneos/Siphon.app/Siphon normal armv7 cd /Users/jaxtrinc/Desktop/Siphone/Siphon2 setenv IPHONEOS_DEPLOYMENT_TARGET 4.0 setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -L/Users/jaxtrinc/Desktop/Siphone/Siphon2/Build/Siphon/Build/Products/Debug-iphoneos -L../pjproject-svn/pjlib/lib -L../pjproject-svn/pjsip/lib -L../pjproject-svn/pjmedia/lib -L../pjproject-svn/pjlib-util/lib -L../pjproject-svn/pjnath/lib -L../pjproject-svn/third_party/lib -L../pjproject-svn/pjmedia/lib -L../pjproject-svn/third_party/lib -L/Users/jaxtrinc/Desktop/Siphone/Siphon2/../pjproject-svn/third_party/lib -L/Users/jaxtrinc/Desktop/Siphone/Siphon2/../pjproject-svn/pjmedia/lib -F/Users/jaxtrinc/Desktop/Siphone/Siphon2/Build/Siphon/Build/Products/Debug-iphoneos -filelist /Users/jaxtrinc/Desktop/Siphone/Siphon2/Build/Siphon/Build/Intermediates/Siphon.build/Debug-iphoneos/Siphon.build/Objects-normal/armv7/Siphon.LinkFileList -dead_strip -framework Foundation -framework UIKit -miphoneos-version-min=4.0 -framework SystemConfiguration -framework UIKit -framework AddressBookUI -framework AddressBook -framework Foundation -framework AudioToolbox -lpj-arm-apple-darwin9 -lpjlib-util-arm-apple-darwin9 -lpjnath-arm-apple-darwin9 -lpjmedia-arm-apple-darwin9 -lpjsip-arm-apple-darwin9 -lpjsip-simple-arm-apple-darwin9 -lpjsip-ua-arm-apple-darwin9 -lpjsua-arm-apple-darwin9 -framework CoreGraphics -lsqlite3.0 -lpjmedia-codec-arm-apple-darwin9 -lgsmcodec-arm-apple-darwin9 -framework CFNetwork -lpjmedia-audiodev-arm-apple-darwin9 -lresample-arm-apple-darwin9 -lg7221codec-arm-apple-darwin9 -framework IOKit -o /Users/jaxtrinc/Desktop/Siphone/Siphon2/Build/Siphon/Build/Products/Debug-iphoneos/Siphon.app/Siphon 此外,我还遇到了“链接器错误”
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
有人能帮我解决这个问题吗?

看起来你链接的库之一没有构建armv7 exe。你需要检查的设置(在库项目中)是“仅构建活动架构”。在这种情况下,你希望将其设置为NO。 - Mike K
我已将“仅构建活动架构”设置为NO,但仍显示错误.. - Vivek2012
你可能没有添加正确的框架,请再次检查它们。 - Shubhank
@Vivek2012,你正在链接一堆库,这些库要么是你自己构建的,要么是下载的(在 /Users/jaxtrinc/Desktop/Siphone/Siphon2/../pjproject-svn/ 目录下)。通过执行 file libFoo.a 或者 lipo -info libFoo.a,可以查看每个 lib*.a 文件中的体系结构。你需要确保所有的库文件都包含 armv6 和 armv7 的指令集。 - Mike K
@Vivek2012你解决这个问题了吗?请帮帮我。提前谢谢。 - Dharmbir Singh
显示剩余9条评论
1个回答

8
一个典型的iPhone项目会编译三种不同的架构:armv6armv7(两种不同的iPhone处理器)以及i386(用于模拟器)。在当前的构建运行中,您至少正在为armv7构建。这是最重要的架构,因为苹果只接受至少具有此架构的构建(如果我没有弄错的话)。 不幸的是,您链接的库不包含此架构的代码。(这就是为什么您在顶部收到警告的原因)。以下错误消息证实了它确实是由pjsippjmedia库引起的。 我不知道您是否从某个地方下载了库或从源代码构建了它们。但是,您需要至少为armv7构建的库。更好的方法是拥有为所有架构构建的库。 您最好遵循《入门指南》页面的这个部分,其中介绍了如何为多种架构构建的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,