草庐IT

c++ - 交叉编译: special cross compiler or just gcc with option -march?

我需要在Linux机器上为RaspberryPI3+编译程序,并且代码必须符合c++17标准。官方工具链已过时且缺少c++17编译选项。我现在可以看到的两个解决方案是:1)gcc有一个选项-march,描述如下:https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html2)按照此处的建议安装arm-linux-gbueabi-gcc软件包:Cross-compilingforRaspberrypiwithmoderngcc两个选项有什么区别?还有其他可行的可能性吗? 最佳答案 如果您想要R

c++ - gcc -I 和 -L 选项似乎不起作用

我正在尝试使用qmake在我的系统中编译一个项目。该项目的某些依赖项未安装,但位于我的主目录中,大致如下所示:libs文件:/home/myusername/local/lib我的包含目录/home/myusername/local/include.在包含目录中,我有一个文件夹,qjson使用库中所需的header。在lib文件夹中,我有文件libqjson.solibqjson.so.0libqjson.so.0.7.1.我的qmake项目文件看起来像这样:linux-g++{INCLUDEPATH+=/home/myusername/local/include/LIBS+=-L/h

c++ - 如何探测目标平台上系统版本的gcc使用的C++ ABI

我有一个配置探测器,它根据平台和版本确定要传递给g++的标志。我通常使用比native安装版本更高版本的gcc,以便访问C++14功能。在较旧的平台上,这意味着我需要添加-D_GLIBCXX_USE_CXX11_ABI=0才能使用较旧的C++ABI,否则我无法链接到主机版本的C++库。然而,一些较新的平台确实使用新的ABI,在这种情况下,需要-D_GLIBCXX_USE_CXX11_ABI=1(或什么都不需要)。我可以根据目标平台的版本(即lsb_release-a的输出)来执行此操作,但我想要一种更通用的方法。我想我已经完成了使用native编译器(与我后来的编译器相反)编译C++h

c++ - 将 NULL 指针访问转换为 Linux/GCC 下的 C++ 异常

有什么方法可以将NULL指针访问转换为Linux下的C++异常?类似于Java中的NullPointerException。我希望下面的程序能够成功返回,而不是崩溃(假设编译器无法在编译期间找出这个NULL指针访问):classNullPointerException{};voidaccessNullPointer(char*ptr){*ptr=0;}intmain(){try{accessNullPointer(0);}catch(NullPointerException&){return1;}return0;}我不期待任何标准的方法来做这件事,因为在C++下访问NULL指针是未定义

c++ - 在 Linux (GCC 4.6) 上聚集 C++ ifstream

上下文我正在慢慢地用C++编写一个专门的Web服务器应用程序(使用Conionhttpserverlibrary和JSONCPPlibrary进行JSON序列化,如果这很重要的话),对于带有GCC4.6编译器的Linux系统(我不关心对非Linux系统的可移植性,或对4.5之前的GCC或对3.0之前的Clang的移植)。我决定将用户“数据库”(用户会很少,大概一两个,所以性能不是问题,O(n)访问时间是可以接受的)保存为JSON格式,可能作为一个小的JSON对象数组,例如{"_user":"basile";"_crypasswd":"XYZABC123";"_email":"basil

c++ - C++/gcc/linux 中的 Continuations/Coroutines/Generators

背景:我试图通过提出这个玩具问题来弄清楚如何实现延续/协程/生成器(不管下面的名称是什么)。环境是gcc4.6和linux3.0x86_64上的C++11。不可移植很好,但不允许使用外部库(boost.coroutine、COROUTINE等)。我认为longjmp(3)和/或makecontext(2)和friend可能会有所帮助但不确定。描述:下面的玩具解析器应该解析等长的as和bs序列。即((a+)(b+))+使得第二个括号产生式的长度等于第三个。当它找到一个产生式(例如aaabbb)时,它会输出它找到的a的数量(例如3)。代码:#include#includeusingname

c - 如何在 Mac OS X 中获得与 Linux gcc/gnu crypt(3) 相同的 crypt(3) 函数? Linux gcc crypt(3) 有 MD5 和 SHA512。 Apple Gcc crypt(3) *仅* 使用 DES

我正在将一些C代码从Linux迁移到MacOSX(yosemite)。MacOSXcrypt()函数(在unistd.h中,正如我所确定的)与Linux中的gcc/gnu不同。我在Linux和MacOSX上有测试程序,如果使用printf显示结果,crypt()c-library函数会显示一个34个字符的字符串。MacOSX上的相同代码仅显示13个字符的字符串。一些研究表明,区别显然是Linuxcrypt()库例程从gnu/gccLinux端的较长vector生成哈希,可能使用不同的加密算法。一些信息还表明,AppleMacOSXc-librarycrypt()函数仅使用DES来加密原

c - Cygwin 的 GCC 与 Windows 上的 MSVC 编译器之间是否存在任何性能问题?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。大多数人在Linux上使用gcc,在Windows上使用MSVC编译器。我最近在我的Windows机器上安装了Cygwin的GCC编译器并正在使用它。我只是好奇它们之间是否存在任何性能差异?我的意思是GCC不能直接安装在Windows上,所以Cygwin包在Windows上创建了一些类似Linux的环境,然后GCC将使用它。那有什么缺点吗?Linux上的

从 gcc 的中间文件编译目标文件

通过使用-fdump-tree-*标志,可以在编译源代码文件期间转储一些中间格式文件。我的问题是是否可以使用该中间文件作为gcc的输入来获取最终目标文件。我问这个是因为我想在gimple的中间文件中添加一些代码(通过使用标志-fdump-tree-gimple获得)格式.当然,我可以使用Hook并添加我自己的通行证,但我还不想达到那种复杂程度。我只想给gcc我修改后的中间文件,这样它就可以从那里开始编译并给我最终的目标文件。有什么想法可以实现吗? 最佳答案 GIMPLE是一种二进制内部格式,很难完全转储并正确重新加载。与LLVM相比

linux - 使用 GCC 和 Egypt 生成综合调用图

我正在尝试生成一个全面的调用图(包括对Linux、运行时等的低级调用)。我用“-fdump-rtl-expand”静态编译了我的源文件并创建了RTL文件,我将其传递给一个名为Egypt的PERL脚本(我相信它是Graphviz/Dot)并生成了调用图的PDF文件.这非常有效,完全没有问题。除此之外,对某些显示为内置的库进行了调用。我想看看是否有一种方法可以不打印调用图,而是打印对库的实际调用?如果问题不清楚,请告诉我。http://i.imgur.com/sp58v.jpg基本上,我试图避免调用图生成有办法吗?--------代码----------#include#include#i