草庐IT

c++ - 如何使用 gcc/g++ 在 Linux 上为 Windows 编译?

我在Linux上使用freeglut用C++(g++)编写了一些效果,我用它们编译了g++-Wall-lglutpart8.cpp-opart8所以我想知道是否可以让g++生成包含所需所有内容的静态编译Windows可执行文件?我没有Windows,所以如果我能在Linux上做到这一点,那就太棒了:) 最佳答案 mingw32作为Linux软件包存在。您可以使用它交叉编译和链接Windows应用程序。有教程hereattheCode::Blocksforum.请注意,例如,命令更改为x86_64-w64-mingw32-gcc-wi

c++ - 如何使用 GCC 和 ld 删除未使用的 C/C++ 符号?

我需要严格优化我的可执行文件的大小(ARM开发)和我注意到在我当前的构建方案(gcc+ld)中未使用的符号没有被剥离。arm-strip--strip-unneeded用于生成的可执行文件/库不会改变可执行文件的输出大小(我不知道为什么,也许它根本做不到)。(如果存在)修改我的构建管道的方式是什么,以便从结果文件中删除未使用的符号?我什至不会想到这一点,但我目前的嵌入式环境不是很“强大”,而且即使从2M中节省500K也会带来非常好的加载性能提升。更新:不幸的是,我使用的当前gcc版本没有-dead-strip选项和-ffunction-sections...+--gcld的-secti

c++ - 编译> 2 GB的代码时如何修复GCC编译错误?

我有大量的函数,总共大约2.8GB的目标代码(不幸的是,没有办法,科学计算......)当我尝试链接它们时,我得到(预期)relocationtruncatedtofit:R_X86_64_32S错误,我希望通过指定编译器标志来规避-mcmodel=medium.除了我可以控制的所有链接的库都是用-fpic编译的。旗帜。尽管如此,错误仍然存​​在,我假设我链接到的某些库不是用PIC编译的。这是错误:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o:Infunction`_start':(.text+0x12)

c++ - GCC 是否有编译器提示强制分支预测始终以某种方式进行?

对于英特尔架构,是否有办法指示GCC编译器生成始终强制在我的代码中以特定方式进行分支预测的代码?英特尔硬件甚至支持这个吗?其他编译器或硬件呢?我会在C++代码中使用它,我知道我希望快速运行的情况,并且不关心当另一个分支需要被采用时的减速,即使它最近已经采用了该分支。for(;;){if(normal){//Howtotellcompilertoalwaysbranchpredicttruevalue?doSomethingNormal();}else{exceptionalCase();}}作为EvdzhanMustafa的后续问题,提示是否可以仅指定处理器第一次遇到指令时的提示,所有

iphone - 用于 iOS 开发的 LLVM 与 GCC

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭9年前。在最新的iOSSDK中,Apple提供了三种编译器选项:GCC、LLVMwithClang和LLVM-GCC。我或多或少地了解这3个是什么意思,LLVM和Clang是什么,等等。我不知道这对iPhone开发人员在实践中意味着什么。截至2011年1月,此时我应该使用哪一个?LLVM是否足够成熟,以至于我可以安全地使用它而不会经常遇到错误?切换到LLVM还

c++ - 使用函数参数作为常量表达式的一部分 - gcc vs clang

考虑以下代码片段:templatestructB{};templateconstexprboolpred(Tt){returntrue;}templateautof(Tt)->decltype(B{}){}clang++(trunk)编译代码g++(trunk)编译失败并出现以下错误:src:7:34:error:templateargument1isinvalidautof(Tt)->decltype(B{})^src:7:34:error:templateargument1isinvalidsrc:7:34:error:templateargument1isinvalidsrc:7

c++ - 使用函数参数作为常量表达式的一部分 - gcc vs clang

考虑以下代码片段:templatestructB{};templateconstexprboolpred(Tt){returntrue;}templateautof(Tt)->decltype(B{}){}clang++(trunk)编译代码g++(trunk)编译失败并出现以下错误:src:7:34:error:templateargument1isinvalidautof(Tt)->decltype(B{})^src:7:34:error:templateargument1isinvalidsrc:7:34:error:templateargument1isinvalidsrc:7

c++ - Clang 和 GCC vs MSVC 和 ICC : Is a static_assert in the copy/move constructor required to work, 如果复制/移动省略也可以应用?

我的模板结构的移动构造函数中有一个static_assert。编译器是否需要考虑这个static_assert,即使复制省略是可能的?这是精简的场景:#includetemplatestructX{X(X&&){static_assert(std::is_same::value,"IntentionalFailure");}};autoimpl()->X;autotest()->decltype(impl()){returnimpl();}intmain(){test();}GCC和Clang同意评估static_assert并且编译失败。另一方面,MSCV和ICC可以很好地编译代码。

c++ - Clang 和 GCC vs MSVC 和 ICC : Is a static_assert in the copy/move constructor required to work, 如果复制/移动省略也可以应用?

我的模板结构的移动构造函数中有一个static_assert。编译器是否需要考虑这个static_assert,即使复制省略是可能的?这是精简的场景:#includetemplatestructX{X(X&&){static_assert(std::is_same::value,"IntentionalFailure");}};autoimpl()->X;autotest()->decltype(impl()){returnimpl();}intmain(){test();}GCC和Clang同意评估static_assert并且编译失败。另一方面,MSCV和ICC可以很好地编译代码。

c++ - 为什么 gcc 提示我的循环?

我有一些相当琐碎的代码,仍然gcc提示(在-O3-march=native中)关于循环展开:cannotoptimizeloop,theloopcountermayoverflow[-Wunsafe-loop-optimizations]for(auto&plan:fw)^这是我的代码的(去掉所有fftw内容,否则会很长)版本classFFTWManager{public:voidsetChannels(unsignedintn){fw.resize(n);bw.resize(n);//somefftw-specificstuffcomeshere}voidforward(){for(