【问题标题】:liboauth not being linked correctlyliboauth 未正确链接
【发布时间】:2011-10-22 05:11:17
【问题描述】:

我正在尝试将 liboauth.dylib 添加到我的 xcode 项目 (c++) 中。我已经配置并制作了库,现在位于我的/usr/local/lib 中,现在有:

 liboauth.0.dylib
 liboauth.dylib <- a link to liboauth.0.dylib
 liboauth.li
 liboauth.a

带有usr/local/include 中的标头。看起来不错。

我通过将路径 /usr/local/lib/liboauth.dylib 添加到 Other Linker Flags 部分并将 usr/local/include/ 添加到 Header Search Paths 部分,将其包含在我的 xcode 中。

我也在Library Search Paths中包含了同样的内容。

这在我的系统上运行良好。但是,如果我将生成的 .app 带到另一台(osx)计算机上,它会给出错误 /usr/local/liboauth.0.dylib(我通过打开 .app 并运行 unix 可执行文件来得到这个)。

链接器不应该在构建时包含 liboauth dylib 吗?那么在不同的电脑上应该不会有问题吧?

如果答案是否定的,那么我将如何将 liboauth.dylib 包含到 .app 中,以便它可以在任何计算机上运行(运行 osx)?

这里是具体的错误:

Library not loaded: /usr/local/lib/liboauth.0.dylib
Referenced from: /Users/scratch/gameTest.app/Contents/MacOS/gameTest
Reason: image not found

编辑:我找到了问题!在 liboauth.0.dylib 上使用 otool -l 命令我发现了这个:

Load command 3
          cmd LC_ID_DYLIB
      cmdsize 56
         name /usr/local/lib/liboauth.0.dylib (offset 24)
   time stamp 1 Thu Jan  1 12:00:01 1970
      current version 9.1.0
compatibility version 9.0.0

有人可以帮我弄清楚如何改变这个吗?我认为它与 install_name_tool 有关,但我不知道如何正确处理。

【问题讨论】:

    标签: c++ xcode linker linker-errors


    【解决方案1】:

    两个系统是一样的吗? 32 位/64 位,Snow Leopard 与 Leopard。

    我可以看到库会有什么不同,如果是这种情况,可能会产生错误。

    如果它们相同,则可能是您在项目设置中设置了链接器标志,并且它被您的目标设置覆盖。

    【讨论】:

    • 是的,两者都是雪豹。只是为了确认只有我的操作系统安装了 liboauth。另一台电脑没有。我希望我的应用程序包含 liboauth.dylib 并从中读取。而不是尝试从 /usr/local/ 读取
    • 如果它们相同,则可能是您在项目设置中设置了链接器标志,并且它被您的目标设置覆盖。
    • 嗯,不,我只是仔细检查了一下,这两种情况都是相同的。不过建议很好。我一直在尝试这样做,但仍然遇到相同的错误: cp -f /usr/local/lib/liboauth.dylib "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/liboauth.dylib"; install_name_tool -change ./liboauth.dylib @executable_path/liboauth.dylib "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME";这看起来对吗?
    • 嘿,我在这里找到了一份工作。我在我的 .app 中包含“liboauth.dylib”,然后在终端中使用“install_name_tool”来更改它在哪里寻找其他 dylib 等。这还需要包括 libcrypto、libiconv、libidn、libintl、libssl 和 libz(以及改变一切都很好)。这很糟糕吗,我违反规则/做错了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2011-11-11
    相关资源
    最近更新 更多