【问题标题】:How can I use GSL with C++11 and the new STL?如何将 GSL 与 C++11 和新的 STL 一起使用?
【发布时间】:2013-03-28 09:30:37
【问题描述】:

我正在建立一个新的 C++ 项目(在 Xcode 4.6 中),我非常想使用新的 C++11 标准的特性(lambda 表达式、自动等)。我正在尝试(静态)将 Gnu 科学图书馆(GSL)链接到这个项目中,使用 Darson 对 this 上一个问题的回答。但是,他的回答建议将编译器更改为 LLVM GCC 4.2,它不支持新的 C++11 功能。

当我更改为默认的 Apple LLVM 编译器 4.2 时,构建失败,我得到一长串错误,Xcode 在新的“libc++”的标头中追溯到语义问题(未声明的标识符、未知类型名称等) " STL。

所以我的问题是:有没有人找到在新的 C++11 标准中使用 GSL 的方法?它不一定必须在 Xcode 中,我很乐意使用任何(UNIX ) IDE 或构建环境。

【问题讨论】:

  • 达森的回答在我看来是错误的;他谈到将库搜索路径设置为/usr/include/lib???仅出于这个原因,我会忽略它。
  • @trojanfoe 我想他的意思是'/usr/local/lib',在我的例子中是'/opt/local/lib'(默认的macports库目录)。

标签: c++ xcode c++11 gsl


【解决方案1】:

我已经能够解决我自己的问题,我想我会与那些可能也在为此苦苦挣扎的人分享它。

正如我所怀疑的那样,问题的发生是因为我的 GSL 安装(来自 macports)是针对“旧”STL(libstdc++)构建的。因此,我的解决方案是针对“新”STL (libc++) 重新编译 GSL。这很容易通过解压源代码并运行来完成

./configure CC=clang CFLAGS="-stdlib=libc++" LDFLAGS="-stdlib=libc++"

我还添加了--disable-shared 仅构建静态库,并添加--prefix=... 设置构建路径。然后剩下的就是运行makemake install

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 2011-03-22
    • 2017-08-11
    • 1970-01-01
    • 2013-12-22
    • 2015-11-28
    相关资源
    最近更新 更多