C ++ 11的编译器标志-找不到计时文件[关闭]

Posted

技术标签:

【中文标题】C ++ 11的编译器标志-找不到计时文件[关闭]【英文标题】:Compiler Flags For C++11 - chrono file not found [closed] 【发布时间】:2016-11-23 20:46:25 【问题描述】:

我正在尝试制作一个从 github 下载的项目。 设置所有依赖项后,它要求我运行“make”。但是,'make' 失败并抱怨找不到 chrono 文件。 我知道这是与编译器相关的问题,我必须启用 c++11 支持。更具体地说,传递编译器标志-stdlib=libc++。 但是,将此标志添加到我的 Makefile 仍然会产生相同的错误。谁能解释这个标志需要在哪里/如何设置?

这是 Makefile 的内容:

TARGETS = \ 
    ptools \ 
    feature \ 
    libsvm \ 
    wrapper 

all: 
    -for dir in $(TARGETS); do \ 
    cd $$dir; $(MAKE); cd ..; \ 
    done cd libsvm; $(MAKE) lib; cd ..; 

clean: 
    -for dir in $(TARGETS); do \ 
    cd $$dir; $(MAKE) clean; cd ..; \ 
    done 

test: 
    @echo hello; 

.PHONY: clean $(TARGETS)

Update1:​​ 运行brew install gcc 后,它开始下载依赖项。但是,它在下载依赖项之一 mpfr 时总是会中断,并出现以下错误:错误:mpfr 无法使用任何可用的编译器构建。安装 GNU 的 GCC。

Update2:我设法更新了 gcc,它返回的版本是 6.2.0。但是,我仍然看到同样的错误。 我在 Makefile 中添加了CXXFLAGS += -stdlib=libc++ -std=gnu++11,但仍然看到相同的结果。

【问题讨论】:

您在开发环境中使用的是什么编译器(和版本)? 你在传递-std=c++11吗?当我上次使用 C++11 时,你必须在 GCC 和 Clang 中执行此操作。 github 项目的链接可能会有所帮助。 @SR_ 一些 makefile 细节就足够了。 我必须下载xCode,所以我相信它使用的是gcc。版本是4.2.1。 【参考方案1】:

你应该添加

CXXFLAGS += -std=c++11

到你的makefile(在规则之前的某个地方)。


假设您有足够最新的工具链。

旧的编译器支持标志

-std=c++0x

可能会。


如何更新您的工具链(正如您在 your comment 中要求的那样),取决于您的操作系统环境和软件管理系统。

至少可以选择自己编译最新(稳定)版本的工具链。

【讨论】:

以上是关于C ++ 11的编译器标志-找不到计时文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥找不到静态库头?

c 的 SWIG python 绑定找不到标准头文件的 _EXFUN

在 C 代码中找不到库

Java类的标志出现了一个大j,好像action找不到这个类?

C++ Qt - QTcpSocket - 找不到文件

计时器、线程和编译器不当行为