【问题标题】:How can I use a particular library while compiling?编译时如何使用特定的库?
【发布时间】:2014-03-20 11:36:46
【问题描述】:

我在 Ubuntu 13.04 32 平台上,我正在尝试从源代码编译 "birdie"。 我收到以下错误:

/birdie/build/src/main.c:98:46: error: too few arguments to function 'g_option_context_add_main_entries'
In file included from /usr/local/include/glib-2.0/glib.h:66:0,
             from /home/***/Desktop/birdie/build/src/main.c:20:
/usr/local/include/glib-2.0/glib/goption.h:337:17: note: declared here

我从存储库安装了libglib2.0-dev 2.36.3,从源代码安装了glib-2.38.2。它们安装在不同的路径上,比如一个在/usr/lib,另一个在/usr/local/lib

我的问题是如何使用一个库代替不同路径中的旧库并禁用它?

【问题讨论】:

    标签: linux ubuntu glib


    【解决方案1】:

    这可以在编译期间使用传递给gcc 的参数来实现。

    默认情况下,搜索所有default path 目录,如果匹配,则使用那些libraries。要覆盖该行为,您还可以在 default path 之前指定要搜索的 directories

    gcc <your-file.c> -o <object-file> -I<additional directory to be searched> -L<linking path>
    

    在你的情况下,应该是

    CFLAGS=-I/usr/local/lib -L/usr/local/lib
    

    然后将上面的CFLAGS传递给编译器。

    【讨论】:

    • 感谢您的回答。是否可以从终端设置CFLAGS 就像CFLAGS=-I/usr/local/lib -L/usr/local/lib make 一样,还是必须将其添加到makefile 中?
    • 您必须编辑在 make 文件中使用的 CFLAGS。将这些添加到最后。
    • 另外,如果您发现答案有用并且您找到了答案,则将其标记为已回答。 :)
    • :) 我会接受的,我记住了。我还在努力克服这个错误
    • 所以这意味着include/link paths 仍然没有改变。你能确保路径不会被makefile 中的其他任何地方覆盖吗?
    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多