首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gflags链接器-错误:未定义的引用

gflags链接器-错误:未定义的引用
EN

Stack Overflow用户
提问于 2017-11-14 15:25:09
回答 1查看 3.4K关注 0票数 0

我安装了gflag:

代码语言:javascript
复制
$ ls /usr/local/lib/ | grep gflags
libgflags.a
libgflags_nothreads.a
$ ls /usr/local/include/ | grep gflags
gflags

和包含的<gflags/gflags.h>

代码语言:javascript
复制
#include <gflags/gflags.h>

DEFINE_bool(a, false, "test");

int main(int argc, char **argv) {
    gflags::ParseCommandLineFlags(&argc, &argv, true);
    return 0;
}

但是我得到了一个链接器错误!

代码语言:javascript
复制
$ g++ -lgflags a.cpp 
/tmp/cchKYAWZ.o: In function `main':
/home/wonter/gflags-2.2.1/build/a.cpp:6: undefined reference to `google::ParseCommandLineFlags(int*, char***, bool)'
/tmp/cchKYAWZ.o: In function `__static_initialization_and_destruction_0(int, int)':
/home/wonter/gflags-2.2.1/build/a.cpp:3: undefined reference to `google::FlagRegisterer::FlagRegisterer<bool>(char const*, char const*, char const*, bool*, bool*)'
collect2: error: ld returned 1 exit status

我尝试了$ g++ /usr/local/lib/libgflags.a a.cpp -o test,但得到了相同的错误。

我的平台是Ubuntu 17.10,GCC的版本是gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3)

是不是因为我的GCC版的问题?

EN

回答 1

Stack Overflow用户

发布于 2017-11-14 15:34:56

您需要链接到gflags,而不是在编译命令行中包含归档文件:

代码语言:javascript
复制
$ g++ -Wl,-Bstatic -lgflags,--as-needed a.cpp -o test

如果只有一个静态库,g++链接器可以处理。所以基本上你只需要告诉编译器/链接器你需要gflags

代码语言:javascript
复制
$ g++ a.cpp -o test -lgflags
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47279920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档