问题标签 [gcc5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - g ++未定义对“main”的引用
我有一个 gcc 5.2.0 配置如下:
和 g++ :
我在 tmp2.cpp 文件中有以下简单的 c++ 代码:
我正在尝试编译成动态库(.so),如下所示:
最后一个命令给了我以下错误:
-v
可以在此处的要点中找到详细输出 thx 。
我对 gcc/g++ 很陌生,并不真正了解发生了什么。发生了什么 ?
macos - 在 OSX 上使用 g++-5 的 Cython
我正在使用python 3.4
并且我将包装一些 cpp 文件,这些文件使用一些新的 c++ 语言功能以及 openmp,但是,我在让它工作时遇到了一些麻烦。我已经使用 brew 安装了 gcc5,我可以很好地编译我的 cpp 文件。当我尝试将它们包装到 pyx 文件中时,会出现编译器错误。这是我的setup.py
:
跑步
我收到很多这样的错误:
如果我将编译器更改为 normal g++
,它可以正常工作并编译Apple LLVM version 6.1.0 (clang-602.0.53)
有谁知道发生了什么?构建一个静态或动态库并包装它会更好吗?如果你不知道,我对 Cython 很陌生。任何意见是极大的赞赏!
c++ - 链接到使用 GCC5 编译的库时,clang 中的未定义引用
我尝试使用 libmuparser 的 ubuntu 15.10 存储库版本(包 libmuparser2v5)。使用 gcc 编译可以正常工作,但不能使用 clang。我对此进行了更深入的研究,以提出以下最小(非)工作示例和一些问题。
考虑一个带有一个简单类的库,该类接受 astring
并返回 a string
。
testlib.h
:
testlib.cpp
:
这是用 gcc 5.2.1 作为静态库编译的
现在编译一个应用程序main.cpp
通过使用 clang 3.6.2-1
导致错误
现在我发现 gcc5 有一个新功能,称为 ABI 标记,可以在不兼容时帮助对库进行版本控制并防止链接。看静态库
给出:
所以添加了 ABI 标签,但没有cxx11
添加. 当一个方法返回一个. 这就是为什么 clang 只声称没有找到。get
set
string
Test::get()
我想这样做是为了给出get
一个调用签名,清楚地表明需要 c++11 才能与该函数链接。由于类型set
的原因,这不是必需__cxx11
的。
问题:
- 我的猜测是对的,还是可能有更多内容需要补充?
- 如果是这样,如何解决这个问题?
- 库编写者可以做些什么来使库可链接到 gcc 5.2 和 clang 3.6 编译代码?(源代码变化?)
- 库用户可以做什么来编译和链接 clang 3.6 与使用 gcc 5.2 编译的库,反之亦然。(源代码更改或编译标志?)
- 包维护者可以做些什么来使库可链接到 gcc 5.2 和 clang 3.6 编译代码?(编译标志?)
- 未来版本(哪个版本)中, clang 开发人员会修复这个问题吗?(默认情况下 ABI 兼容性?)但是现在有一个解决方案仍然很好,因为否则 clang 很难在 ubuntu 15.10 和衍生产品上使用。
附加信息:
- 的签名是在编译
get
时定义的。testlib.cpp
因此,共享对象不会产生任何影响。也可以nm -gC testlib-gcc.o
用来查看符号。 - 在一个用 clang 编译的库中,签名
get
是Test::get()
. 然后 gcc 找不到符号Test::get[abi:cxx11]()
,所以兼容性是相互破坏的。 - 使用 gcc 的编译标志
-D_GLIBCXX_USE_CXX11_ABI=0
(在此处找到)不是解决方案,从那时起 set 的签名也被更改:(Test::set(std::string)
但get
那时很好)。 - 在 clang 中使用编译标志
-stdlib=libc++
似乎没有帮助,因为它还报告了未定义的引用Test::get()
(以及更多未定义的引用)。
python - 导入错误:Cython 和 gcc-5
我想通过使用 Cython 在 Python 中使用一些 C 函数。在这里我注意到,如果我使用 GCC-5 编译 C 代码(为了使用 Cilk)nm
,在生成的 *.so-function 中列出的入口会少很多:
我所有的自写函数都不见了。此外,我得到了错误
我该如何解决这个问题,为什么会这样?
-文件的内容pyx
:
以及 setup.py 文件中的命令行选项:
gcc - 可变参数函数的 gcc 5 错误:后缀或操作数对“movq”无效
尝试安装 OpenMPI 时,.configure 文件在检查所选编译器的 ISO C99 能力的部分中失败。
困惑的是 gcc 当然有 std=gnu99 和 std=c99 选项,我修剪了 20,000 行配置文件以隔离违规部分。最后,我将其追溯到 gcc 5 没有编译变量参数函数。
下面的代码生成“后缀或操作数对 `movq' 无效”错误,这是 .configure 文件失败的根本原因。
(我遵循的 OpenMPI 的分步安装在这里https://wiki.helsinki.fi/display/HUGG/Installing+Open+MPI+on+Mac+OS+X)
任何人都见过这个并且知道如何解决它?
debian - libgcc1 依赖 gcc-5-base 但它不可安装
我正在尝试通过使用在 Debian 7.8 上安装 fbi apt-get install fbi
,但我收到包含以下内容的错误消息:
实际上,每当我尝试使用apt-get
.
此错误消息背后的原因可能是什么?
提前致谢, 阿纳斯
gcc - 在 g++-5-ish 发行版上使用 g++-4.9 与 Boost 链接时未定义的引用
我编写了以下开创性的应用程序:
我正在尝试在 Debian Stretch 上构建它,默认编译器是 GCC 5.3.1-5,安装的 Boost 版本是 1.58.0。
但是,由于我不会在此处介绍的原因(如果这不是 MCVE,这将很明显g++-4.9
),我需要使用 编译和链接二进制文件,而不是g++-5.3
. 编译工作正常,但是当我尝试链接时,会发生这种情况:
- 这是由于 gcc 4 和 5 之间的某些 ABI 不兼容造成的吗?
- 如果是这样,除了构建我自己的 Boost 版本之外,还有什么办法可以绕过它?
- 如果不是,是什么原因造成的?
c++ - 试图让 CUDA 7.5 与 GCC 5.x 一起工作
因此,如果您在系统 GCC 版本为 5 及更高版本时尝试使用 nvcc,则会收到“不支持的版本”错误。但是 - 我听说有人报告说他们刚刚对此发表了评论,并且 CUDA 7.5 与 GCC 5.x 一起“为他们工作”。
但是,当我这样做(检查在 中$CUDA_DIR/host_config.h
)并编译某些内容时,我收到以下错误:
和一堆其他人,但那些可能取决于这些。现在,这些是 X86 架构的与 MMX 相关的内在函数。我不直接使用它们,所以我猜他们以某种方式选择加入。也许这可以避免?
有没有办法克服这些错误并真正让 GCC 5 与 CUDA 7.5 共存?而要构建和运行代码?
笔记:
- 我已经阅读了使用的建议
-D__STRICT_ANSI__
。我有,而且似乎没有帮助。 - 我在 Fedora 22 上,以防万一。
c++ - GCC 5.1 库对旧发行版的依赖——演练
我在我的 CentOS 5.11 上编译并安装了 GCC 5.1.0(板载默认 GCC 4.x)。
在另一个 CenOS 5.11 工作站上运行已编译的(在这台机器上)二进制文件是安全的,哪里没有任何 gcc 5.1 运行时库(/usr/local/lib64)?
将不胜感激任何建议。
谢谢你。
c++ - 错误:“log1p”不是“std”的成员
我创建了一个简单的 main 函数,在它之上,我包含了犰狳库。
我使用 g++(GCC 版本为 5.3)并在 windows 8 上的 cygwin 64bit 下编译它。我打开了 c++11 选项并添加-larmadillo
了链接到犰狳库。
一旦我编译代码,我就会收到如此可怕的错误。相同的代码在 windows XP 32 位上运行得非常好。