草庐IT

arm-linux-gnu-gcc

全部标签

c++ - 两次 GCC 编译相同的输入,生成两个不同的代码(第二个错误)

我有时会遇到GCC(4.6.4,Ubuntu12.04)的奇怪问题,我正在使用它来编译一个巨大的项目(数百个文件和数十万行代码),但我最近发现了一些东西。在某些编译之后(似乎是随机发生的),我得到了一段特定的代码,编译方式不同且错误,导致我的代码出现未定义的行为:classsomeDerivedClass:publicsomeBaseClass{public:structanotherDerived:publicanoterBaseClass{voidSomeMethod(){someMember->someSetter(2);}}}其中“someSetter”定义为:voidsome

c++ - gcc 中的模糊重载,适用于 msvc

以下代码在msvc18.00上编译良好,但在gcc4.9.1上编译失败:#includetemplateclassNum{};classZero{};templateNumoperator+(Num,Num){return{};}templateZerooperator+(Num,Num){return{};}intmain(){Numone;Nummone;Numnull;autoa=one+one;static_assert(std::is_same>::value,":(");autob=one+mone;static_assert(std::is_same::value,":(

嵌入式Linux开发-USB驱动

0.前言哥们马上就要被裁了,总得整理一下技术方面的积累,准备开始下一轮的面试和找工作之旅了。。。。1.概述通用串行总线(USB)是主机和外围设备之间的一种连接。从拓扑上来看,是一颗由几个点对点的连接构建而成的树。这些连接是连接设备和集线器(hub)的四线电缆(底线、电源线和两根信号线)。USB主控制器(hostcontroller)负责询问每一个USB设备是否有数据需要发送。Linux内核支持两种主要类型的USB驱动程序:宿主(host)系统上的驱动程序和设备(device)上的驱动程序。宿主系统上的USB驱动程序控制插入其中的USB设备,USB设备的驱动程序控制该设备如何作为一个USB设备和

c++ - `pragma pack(push, 1)` 在 GCC 4.4.7 中崩溃。可能的编译器错误?

我遇到了一个让我难过的错误。我已将其缩小为GCC(特别是RHELLinux,GCCv.4.4.7)中的pragmapack命令的问题,可以在下面显示的小示例案例中重新创建该问题。看起来GCC在这种情况下计算了错误的偏移量,这将表现为循环内的崩溃。删除pragmapack也可以消除错误-但在实际应用程序中,这将导致使用许多额外的千兆字节内存,这是不可取的。在下面的示例中,您需要在启用优化(O3)的情况下进行编译才能体验失败。我还在结构中提供了一个示例项(cMagic),可以将其删除,这将更改结构对齐方式并防止错误触发。我查看了生成的程序集,认为这可能是一个编译器错误。我还缺少其他东西吗?

c++ - 非标准 gnu 案例范围的标准替代方案

我有一个快速解决方法的问题,以享受非标准gnu的好处caseranges.例如,非标准:case1...5:可以替换为:case1:case2:case3:case4:case5:可能一些宏解决方案可能是有序的。根据我的内存,宏循环无法循环进行大量迭代。出于这个原因,如果范围“很大”,比如以千为单位怎么办? 最佳答案 如果您在谈论预处理器循环,我猜您正在考虑来自boost的预处理器元编程。虽然它可能非常便携,但循环似乎仅限于255“迭代”。事实上,实现并不是一个真正的循环,它更像是一个硬编码的循环展开(因此是限制)。您当然可以将其扩

c++ - 有效的 ARM 可执行文件找不到库

我为ARM嵌入式设备(运行DD-WRT的AsusRT-AC68U路由器)交叉编译了一个小的HelloWorld程序:#arm-linux-gnueabi-g++hello.cpp-mcpu=cortex-a9-s-ohello文件看起来不错:#filehellohello:ELF32-bitLSBexecutable,ARM,EABI5version1(SYSV),dynamicallylinked(usessharedlibs),forGNU/Linux2.6.32,BuildID[sha1]=5099693c31154cdd7f04c16ced5b80b1e35e625b,stri

Linux 编译安装colmap

        COLMAP可以作为独立的app,通过命令行或者图形交互界面使用,也可以作为一个库被包含到其他源代码中。        这里记录一下编译安装colmap的过程,首先需要安装好CUDA,CUDA具体安装过程这里就不赘述了。在GitHub上下载源代码,我这里就是下载的主干的源码:        源码下载地址:GitHub-colmap/colmap:COLMAP-Structure-from-MotionandMulti-ViewStereo    源码编译说明:Installation—COLMAP3.9-devdocumentation        一、安装依赖库sudoap

c++ - 调用 gcc _without_ -pthread 有什么好处?

我们知道添加-pthreadmakesGCCusereentrant/thread-safecode(编译C/C++代码时)。虽然我想如果您允许不可重入,您确实可以在这里和那里节省几个周期-我想知道不总是指定-pthread是否有任何实际优势。有吗? 最佳答案 一个例子:std::shared_ptr的libstdc++实现doesn'tuselockingwhencompiledwithout-pthread,如果您在单线程环境中大量使用共享指针,这可以大大提高性能。 关于c++-调用

c++ - Clang 和 GCC 在解析可变函数模板重载时的不同行为

考虑这段代码:#includeintfoo_i(intx){returnx+1;}charfoo_c(charx){returnx+1;}usingII=int(*)(int);usingCC=char(*)(char);templatestructfn{Ff;templatedecltype(auto)operator()(Args&&...args)const{returnf(std::forward(args)...);}};structfn_2:privatefn,privatefn{fn_2(IIfp1,CCfp2):fn{fp1},fn{fp2}{}usingfn::ope

【教程】Linux使用git自动备份和使用支持文件恢复的rm命令

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn]背景介绍        首先非常不幸地告诉你:Linux系统的标准rm命令不支持文件恢复功能。一旦使用rm删除了文件或目录,它们就会从文件系统中永久删除,除非你使用专门的文件恢复工具尝试恢复这些文件。        不过,为了提供文件恢复功能,存在一些替代方案,其中trash-cli是一个非常流行的选择,它为命令行环境提供了回收站功能。    很心疼,我的工程又一次被我误删了。方案介绍使用git自动备份    这个方法大家都知道,每次记得提交一下,如果误删除了可以回退,只是每次要提交很麻烦。参考的自动提交脚本auto_git.sh