问题标签 [gcc4.8]
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.
windows - 将 Octave 解释器集成到使用 GCC 4.8.1 编译的程序中
我正在尝试将 Octave 解释器集成到使用 GCC 4.8.1 编译的刚体模拟器中。按照官方文档 ( https://www.gnu.org/software/octave/doc/interpreter/Standalone-Programs.html ) 中发布的步骤,我可以编译、链接并成功执行第一个示例。请注意,当将 minGW 4.8.1 添加到 PATH 时,我可以将可执行文件与 mkoctfile.exe 或 g++ 链接。但是,第二个示例展示了如何将解释器嵌入到我的程序中,当 GCC 4.8.1 二进制文件位于 PATH 中时,它会编译、链接,然后在执行时出现段错误。当我使用提供的编译器时,它可以工作(在我的情况下,它是 gcc 4.6.2 在 Windows 上随 octave 3.6.1 一起提供)。
我是否需要使用 GCC 4.8.1 从源代码构建 octave 才能成功链接使用该版本编译的程序,还是有其他方法可以这样做?
使用 GCC 4.6.2 对我来说不是一个选项,因为我的程序使用了该版本中不存在的 c++11 功能。
multithreading - OpenMP 嵌套任务,1 个线程不执行任务
我正在使用下面编写的简单代码进行一些测试。问题是在四核机器中,我只得到了 75% 的负载。第四个核心处于空闲状态,无所事事。代码有一个 omp 并行,然后是一个 omp 单,线程在其中生成一个任务。该任务会生成许多孙任务。该任务将在屏障中等待,直到其所有子项(单个区域中线程的孙子项)完成,并且执行单个区域的线程在另一个屏障上等待,直到其直接后代任务完成。问题是执行单个区域的线程不执行任何孙任务。鉴于我正在使用的块大小,我正在创建数千个任务,因此这不是可用并行性的问题。
我是否误解了 OpenMP 任务?它与仅等待直接孩子的任务等待有关吗?如果是这样,我怎样才能让空闲线程执行可用的工作?想象一下,我想像在 OpenMP 4.0 中一样创建具有依赖关系的任务,那么我将无法利用具有依赖关系的所有可用线程。需要父任务中的障碍,因为我不想在所有子任务完成之前释放依赖它的下一个任务。
编辑:
我使用 ICC 15.0 进行了测试,它使用了我机器的所有内核。尽管 ICC 分叉了 5 个线程,而不是 GCC 那样的 4 个。第五个 ICC 线程保持空闲。
编辑 2: 以下更改,添加与线程一样多的顶级任务的循环,使所有线程都获得任务。如果顶级任务 < ntthreads,那么在某些执行中,主线程将不会执行任何任务,并且会像以前一样保持空闲状态。ICC 一如既往地会生成一个允许使用所有内核的二进制文件。
c++11 - C++11 代码,GCC [OK],VS [FAILS],ICC[??]
我正在尝试构建一个使用 C++11 功能的CPP 项目。使用 GCC-4.8.3 并指定-std=c++11代码没有错误。
如您所知,Visual Studio 2013 并不完全支持 C++11。相反,我安装了支持 C++11 的 Intel Parallel Studio XE 2015。
现在,在 Visual Studio 中,我指定了英特尔编译器来绕过 VS 编译器。见下图。
我还启用了 C++-11 支持,如下所示
但是,我得到了一些错误,堆栈跟踪显示错误来自 microsoft visual studio 头文件。
看来VS编译器还没有完全被Intel编译器取代。
pastebin提供完整的输出。
我知道完整的输出很长,所以这里是产生错误之一的代码跟踪。我认为两个错误是相似的。
1)
2)
3)
4)
在行auto
,错误是
有没有办法解决这个问题?为什么它不遵循英特尔编译器头文件并错误地遵循我知道它不支持 C++11 的 VS 头文件?
~~~~~~~~~~~~~~~~~~~~ 更新~~~~~~~~~~~~~~~~~~~~~
测试 Visual Studio 2015 RC 版本,代码构建成功,无需英特尔编译器。
boost - 使用 gcc-4.8 编译 boost 1.59。如何消除警告?
./boost/python/cast.hpp:73:20: 警告: typedef 'must_be_a_complete_type' 本地定义但未使用 [-Wunused-local-typedefs] /usr/include/python2.7/object.h:115:51:警告:取消引用类型双关指针将破坏严格别名规则 [-Wstrict-aliasing]
ubuntu-14.04 - 在 32 位 Ubuntu 14.04 上运行 gcc-4.8,如:无法识别的选项 '--32'
我刚刚在我的机器上安装了 32 位 Ubuntu 14.04 和 gcc/g++ 4.8。
我写了一个简单的 hello.c 并用命令 g++ hello.c -o hello 编译
它给了我一个错误,如:无法识别的选项'--32'。
我很惊讶我在谷歌上没有找到关于这个错误的任何结果。需要一些帮助!谢谢你。
c++ - When int isn't an int (intX_t)
I have some headache inducing problems here.
Basically I'm trying to make a library compatible with different Arduino systems (not an Arduino question).
I have a situation where types no longer match, as in an int
is no longer equivalent to its identical fixed width type. In the limited environment provided (no stdlib and such) I have written my own type trait classes for the features I need.
Everything works fine using GCC 4.8.1 (avr) & Extensa-1x106-GCC (ESP8266), but not in GCC 4.8.3 (SAM,SAMD cores).
Basically I have knuckled down my code to show the problem in this very basic code (int
is confirmed to have 4 bytes on the failing 32-bit platform compilers):
You can view a 'normal' C++ implementation here (above is a basic implementation for use within the Arduino IDE): http://cpp.sh/377e
By the way, the static assert does not fire in the cpp.sh compiler either.
Is 4.8.1 incorrect, meaning int
and int32_t
should be considered different types. Or is 4.8.3 incorrect and they should be equivalent if equally sized defined by the implementation.
I was using the code below to detect any type of integer, which was where I found my error originally.
I of course can change it to check for char
, int
, long
, etc.. but it will still require checking for all fixed width variations and most likely the int_fastX_t
and int_leastX_t
types, which seems like a super redundant method to ensure maximum usability.
Any ideas?
Cheers, I appreciate any input!
c++ - 编译时等价于 std::accumulate()
我试图通过定义一个类模板来编写一个基本的编译时版本,std::accumulate()
该类模板将递归地遍历给定范围并在每次迭代时添加元素。
使用gcc 4.8.4
on编译测试程序时Ubuntu 14.04
,出现以下错误:
这是代码:
所以基本上,标准不允许在模板参数中使用变量,这就是我在这里所做的:
问:编写类模板(或任何其他“编译时”计算机制)以实现与 类似的结果的正确方法是什么std::accumulate()
?
(理想情况下,应该能够像 real 一样传递自定义范围和二进制操作std::accumulate()
)
编辑:代码中std::vector
使用的只是一个例子。我也尝试过std::array
C 风格的数组,但我仍然遇到类似的问题。
EDIT2:我不想使用宏。
EDIT3:我不想使用外部库。这里的目标是做一个简单的、自包含的编译时计算块。类模板是我的第一个想法,但我对其他建议/技术持开放态度。
c++ - 使用 gcc 4.8.4/clang3.4 编译 Nana 示例 (nana v1.1.2/1.1.3) 时出错
我尝试了从 Github 下载的最新的 nana (1.1.2/1.1.3)。该库编译良好。当我尝试使用 linux (gcc 4.8.4, clang 3.4) 编译和链接任何示例程序时,我收到以下错误:
制作:
示例 cpp:
任何帮助表示赞赏。
c++ - RHEL6 上的自定义 GCC 4.8.2 使用 std::shared_ptr 产生构建错误
我正在使用 CMake 2.8.11 和 GCC 4.8.2。我正在构建一些在 MS VS 2012 中构建良好的 C++ 代码,std::shared_ptr
但是当我使用 GCC 4.8.2 在 RHEL6 上尝试相同的代码时,我立即遇到了以下错误:
我发现这个问题的答案是我认为已经解决的,并立即添加-std=c++11
到我的CMAKE_CXX_FLAGS
中,但我仍然遇到错误。我只需使用以下方法在 CMake 中添加标志:
我使用以下方法在 CMake 中设置了我的自定义编译器:
包括是
这又具有
它定义了shared_ptr
类。所以我不确定为什么我不断收到错误(是的,我在添加-std=c++11
编译器选项后清除了缓存并重建)。任何想法都非常感谢。
编辑1:
我创建了一个简单的程序(main.cpp),如下所示:
然后我使用它构建它<path/to/custom/>g++ main.cpp -o prog
并立即遇到相同的错误(上图)。接下来我做了:<path/to/custom/>g++ -std=c++11 main.cpp -o prog
它编译并运行正常。对于我的实际应用程序,我-std=c++11
也在我的配置系统中将标志添加到链接器标志(除了编译器标志)CMake
,但我仍然看到相同的错误。继续检查CMakeCache
以查看标志是否已注册财产,但任何想法都值得赞赏。
编辑2:
CMakeCache
令人惊讶的是,我发现-std=c++11
标志没有被添加到CMAKE_CXX_FLAGS
等。所以这一定与错误有关。我正在尝试修复它,以便它实际上采用此标志。谢谢大家。