【问题标题】:GLib usage with XCodeGLib 与 XCode 的使用
【发布时间】:2013-09-14 04:01:06
【问题描述】:

我一直在尝试在一个项目中使用 GLib。我使用 XCode。我通过 Homebrew 下载了 Glib:

brew install glib

然后我跑

brew test glib

哪些输出

/usr/bin/clang -o test test.c -I/usr/local/Cellar/glib/2.36.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.36.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -L/usr/local/Cellar/glib/2.36.3/lib -L/usr/local/opt/gettext/lib -lglib-2.0 -lintl -Os -w -pipe -march=native -Qunused-arguments -mmacosx-version-min=10.9 -isysroot /Applications/Xcode5-DP6.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk

所以,我复制了所有 -I 参数,并将它们粘贴到 XCode -> 项目设置 -> 构建设置 -> 其他 C 标志。

在我的 XCode 项目中的 .c 文件中

    GList  *processList_p = NULL;      /* Pointer to the process list */

如果我编译一切正常,但是如果我从 GLib 调用一个函数,例如

//Create the new list element, append it to the list and return the pointer.
return g_list_append(processList, newProcess);

我得到了错误

架构 x86_64 的未定义符号: “_g_list_append”,引用自: Scheduler.o 中的_CreateProcess ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我真的不知道发生了什么,任何帮助将不胜感激。

【问题讨论】:

    标签: c xcode glib


    【解决方案1】:

    Setting C++ compile flags in xcode

    简而言之:
    添加
    pkg-config --cflags --libs glib-2.0
    的结果 构建设置->链接->其他链接器标志 不构建设置 -> 自定义编译器标志 -> 其他 C 标志

    出于某种原因使用 'pkg-config --cflags --libs glib-2.0' 直接不起作用:

    clang: error: no such file or directory: 'pkg-config --cflags --libs glib-2.0'
    

    【讨论】:

      【解决方案2】:

      正如@Dash83 所说,这是一个链接器问题。您需要让编译器知道位置。

      我机器上的输出:

      $ pkg-config --cflags glib-2.0
      
      -I/usr/local/Cellar/glib/2.46.2/include/glib-2.0 -I/usr/local/Cellar/glib/2.46.2/lib/glib-2.0/include -I/usr/local/opt/gettext/include
      
      $ pkg-config --libs glib-2.0
      
      -L/usr/local/Cellar/glib/2.46.2/lib -L/usr/local/opt/gettext/lib -lglib-2.0 -lintl
      

      将它们传递给clang

      $ clang your_program.c -o your_program `pkg-config --cflags glib-2.0` `pkg-config --libs glib-2.0`
      

      它在我这边编译。

      【讨论】:

      • 使用 ` 添加到这个比我在 mac 上找到的 ' 非常重要。
      【解决方案3】:

      我的朋友,这是一个链接器问题。我在控制台上的 vim 上使用 glib 并遇到你的问题,寻找在 xcode 中使用 glib 的快速入门指南,所以我不能真正告诉你如何在 xcode 上修复它,但我可以向你保证这是一个问题链接器选项/标志。

      【讨论】:

      • 我可以告诉你的是,我使用这个命令将正确的标志传递给我的链接器:pkg-config --libs glib-2.0
      • 谢谢,如果您仍在寻找解决方案,@raf 的答案就成功了。
      【解决方案4】:
      1. 如果不存在则安装 pkg-config

        brew install pkg-config

      2. 列出 cflags

        pkg-config --cflags --libs glib-2.0

      3. 如果不存在则手动选择pkg

        PKG_CONFIG_PATH=/path/to/pkgconfig/ pkg-config --cflags --libs glib-2.0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-11
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多