Linux 编译、链接的问题

2018-07-16 10:28:17 +08:00
 MrVito

环境: ubuntu18.04, g++7.3.0, cmake3.10.2


问题描述: 一个项目中想使用 glog 日志库,于是我从 github 上 clone 了 glog,并且成功编译,安装,之后将安装好 glog 头文件、libglog.a 复制到我的工程里面。我的工程目录结果如下:
├── libs
│   ├── google
│   │   ├── glog
│   │   └── gtest
│   ├── libglog.a
│   ├── libgtest.a
│   └── libgtest_main.a
├── test
│   ├── CMakeLists.txt
│   └── vlist_test.cpp
└── utils
├── vlist.h
└── vqueue.h
然后我在 cmakelists.txt 中写入了这样的内容

include_directories(../libs/)
link_directories(../libs/)
link_libraries(glog)
target_link_libraries(${EXECUTABLE_TARGET} glog)

但是在编译过程中提示我
glog/logging.h:1246:26: error: ‘ noreturn ’ has not been declared
static void __declspec(noreturn) Fail();
这个报错我找遍了 google 也没见有人遇到,所以我认为应该是我的 cmakelist.txt 写的有问题,故又去网上找了别人使用 glog、cmake 的例子,发现应该是没问题的。最后我尝试使用 g++直接编译,使用了这样的命令:

g++ --std=c++11 -c -I../utils/ -I../libs/ -I../libs/google/ -L../libs/ -lglog vlist_test.cpp

可是还是有同样的报错


按理说这个 libglog.a 是用我自己的机器,用 glog 的源文件、头文件编译出来的,就说明这些文件是可以在我的机器上正常编译的,可是为什么我这里就始终编译不过呢?

1251 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/471210

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX