【问题标题】:Mac OS X Sierra : Undefined symbols for architecture x86_64Mac OS X Sierra:架构 x86_64 的未定义符号
【发布时间】:2017-08-21 13:27:15
【问题描述】:

我正在尝试在 Mac OS X Sierra 中构建基于 Linphone 的 C 源文件,但出现以下错误。

这是 C 源文件的链接。 http://www.linphone.org/docs/liblinphone/group__basic__call__tutorials.html

已编辑:

我正在尝试使用此命令编译源代码

clang -o tt tt.c -I/Users/softdev/Downloads/linphone-sdk-3.11.1-mac/include/

错误:

架构 x86_64 的未定义符号
ld:未找到架构 x86_64 的符号
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我曾尝试更改目标cpu,但没有成功。

我的系统有 XCode 8。任何有关这方面的帮助将不胜感激。

已编辑:完成输出

架构 x86_64 的未定义符号: “_linphone_call_get_state”,引用自: tt-ca2045.o 中的 _main “_linphone_call_ref”,引用自: tt-ca2045.o 中的 _main “_linphone_call_unref”,引用自: tt-ca2045.o 中的 _main “_linphone_core_destroy”,引用自: tt-ca2045.o 中的 _main “_linphone_core_invite”,引用自: tt-ca2045.o 中的 _main “_linphone_core_iterate”,引用自: tt-ca2045.o 中的 _main “_linphone_core_new”,引用自: tt-ca2045.o 中的 _main “_linphone_core_terminate_call”,引用自: tt-ca2045.o 中的 _main “_ms_usleep”,引用自: tt-ca2045.o 中的 _main ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

【问题讨论】:

  • 它与目标或CPU无关。这是关于你没有链接到你需要链接的东西。链接器会告诉你缺少 what 符号,你为什么不告诉我们呢?请编辑您的问题以包含 full 错误输出。
  • 你从哪里得到你的 liblinphone 库?您所指的文档可追溯到 2010 年(可能早于 x86_64 甚至是 Xcode 中的一个选项)。我确实在github.com/BelledonneCommunications/linphone-iphone 看到了更新版本的 liblinphone
  • @Someprogrammerdude 我已经编辑了我的问题。
  • @MichaelDautermann,我已经从下面的链接下载了二进制文件。我不想使用 linphone。我只想在我的 Mac 自定义软件中使用底层 liblinphone 库linphone.org/technical-corner/liblinphone/downloads
  • 所以你实际上并没有链接到你想使用的库?然后我假设未定义的符号都是该库中的所有函数(因为您还没有包含完整和完整的错误输出)?您还需要链接到实际的库。库的安装中是否有以lib 开头并以.a 结尾的文件?构建时传递该文件的完整路径。

标签: c xcode macos clang linphone-sdk


【解决方案1】:

我得到了使用这个编译的示例代码:

clang -o hello hello.c -Ilinphone-sdk-3/include -Llinphone-sdk-3/lib -llinphone -lmediastreamer_base

Clang 的 -I 参数指向头文件 (.h) 所在的位置

至于我的补充,-L 指定了 path 以便 clang 到达 lib 文件所在的位置。在您的情况下,它可能位于-L/Users/softdev/Downloads/linphone-sdk-3.11.1-mac/lib

然后-l 指定您想要包含哪些dylib(去掉lib 前缀和dylib 后缀)。

最后,您需要在您指向的示例代码中添加一个缺失的行。添加:

#include <unistd.h>

signal.h之后

【讨论】:

  • 谢谢它有效,但我现在收到 ortp 错误。我也尝试过 -lortp 。错误是 >“连接中的 ortp-error-Error:没有到主机的路由”。任何想法迈克尔?
  • 现在你有了要编译的东西,这听起来像是一个全新的问题。仔细查看您指向的源代码。我没有在其中看到实际的主机名(例如“stackoverflow.com”或“apple.com”)。
  • 我正在使用教程中提到的演示 SIP uri。 wiki.linphone.org/xwiki/wiki/public/view/Lib/Getting%20started/…
猜你喜欢
  • 2012-04-26
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多