Gcc 更改C+的堆栈大小+;GNU编译器在Linux编译中的应用 在C++程序编译中, >代码> g++< /COD> >我使用 LD_标志=-Wl,-stack_大小,0x100000000

但在SUSE Linux中,我经常会遇到如下错误: x86_64-suse-linux/bin/ld:无法识别的选项'--stack' 类似的 我知道这是可以使用的 ulimit-s unlimited 但这并不好,因为单个用户并不总能做到这一点 在Linux中,如何使用GCC为单个应用程序增加堆栈大小?使用--stack而不是堆栈大小,如下所示: gcc -Wl,--stack,4194304 -o program program.c 此示例应为您提供4MB的堆栈空间。在MinGW的GC

Gcc 编译时收到以下警告

对应的代码是 warning: passing argument 1 of 'bsearch' makes pointer from integer without a cast 编译器是gcc 这里的子句定义为*子句 @Paul补充了以下更多信息: 我对上述代码所做的更改是: Parent =bsearch((const size_t)ParentNum, ClauseVector, Size, sizeof(CLAUSE),pcheck_CompareN

Gcc gcov行数与源代码中的行数不同

gcov的输出表明,在10条线路中,70%的线路被执行 但我的代码有10多行 它不计算大括号,else语句 请帮助..gcov只计算实际进入二进制的代码行-大括号只是语法的一部分 可能正在优化/编译else

gcc为不同的SPARC处理器预定义了哪些宏?

运行在不同SPARC处理器上的GCC编译器为C程序预定义了哪些宏。操作系统就是Linux 那么,我如何在编译时区分UltraSPARC、SuperSPARC、Niagara、SPARC64等 谢谢最简单的方法是测试它,例如: $ gcc <whatever you need to specify first CPU> -dM -E - < /dev/null &> cpu1.txt $ gcc <whatever you need to specify se

GCC可以编译的最小、最简单的CPU是什么?

在指令集和模拟的简单性方面。我想实现一个虚拟CPU,并想知道为什么不模拟现有的CPU,以便能够为其编译C代码。可能是AVR或类似的AVR芯片。可能是Ti系列的产品。(面向FPGA的32位处理器)非常小。GCC支持(最初),安东尼·格林为实验而发明的一种小型建筑 您也可以按照他发明自己的小型简单CPU和GCC端口的步骤进行操作。是一个很好的目标,因为它是专门为GCC设计的理想目标。我是作者,很乐意回答任何问题。moxielogic.com的绿色这可能不是一个罕见的问题;我希望大多数CPU/机器模拟

构建交叉编译64位GCC失败

我正在尝试创建一个在本地机器上运行的gcc交叉编译器[Darwin new-host-2.home 10.7.4 Darwin内核版本10.7.4:Mon Apr 18 21:24:17 PDT 2011;root:xnu-1504.14.12~3/RELEASE_X86_64 X86_64],目标是FreeBSD 8.2 X86_64(FreeBSD术语中的AMD64) 我正在编译gcc 4.3.1、binutils 2.19、GMP 4.2.3、MPFR 2.3.2 我看到一些事情可能会出问

gcc 4.6.2带CLOG和ppl的安装

我想用cloog和ppl安装GCC4.6.2。我的系统中安装了这两个库。当我尝试用ppL= /ur/LIB来做 //Debug(启用配置语言= C,C++)时,我得到一个错误找不到目录“/Ur/LIb/LIB”或“/UR/LIB/IONE”< /C> >,所以我尝试了代码> > /配置-启用语言= C,C++ + PPL——用CLUG。在这种情况下,我无法找到可用的ppl。有人能帮我吗?你没说你的系统是什么吗?你也没有说你检查了什么以确保你真的安装了库?所以,这里有一个常见的问题可能是你的问题

Gcc 将newlib移植到交叉编译器中

我正在使用创建交叉编译器 我学习了gcc交叉编译器教程并进入了。在我试图通过发布 makeall安装 当我遇到以下错误时: WARNING: `makeinfo' is missing on your system. You should only need it if you modified a `.texi' or `.texinfo' file, or any other file indirectly affecting the aspect of

Gcc valgrind执行期间引发异常,但直接调用程序时不会引发异常

我遇到了一个非常奇怪的问题,我知道从远处可能很难诊断。但任何提示都会有所帮助 说到这里,我的问题是: 当我运行valgrind来执行我的程序时,会抛出一个异常。但是,当我直接从shell调用程序时,它运行良好 我已经尝试使用valgrind的vgdb来研究为什么会发生这种异常。但这只允许我在异常发生后调查变量,因为在我将gdb附加到valgrind(不使用continue)并逐步完成代码之后,我还没有找到启动gdb的好方法 我已经尝试重新创建引发异常的代码段,但是使用相同的变量内容,我不会触发异

brew中的fontforge大楼,终端找不到gcc错误

这是我第一次尝试在终端中编译源代码(我使用macPorts安装了gimp,但这可能是问题的一部分…?) 我想安装fontforge,我遵循了这些说明 我在安装brew时收到以下警告: Warning: The following *evil* dylibs exist in /usr/local/lib They may break builds or worse. You should consider deleting them: /usr/local/lib/libssl.0.9.8.dy

如何从GCC命令行指定include文件?

在Windows下使用GCC,我希望能够在GCC命令行(或从手动管理的makefile)上指定要包含在正在编译的文件中的特定包含文件的名称。在我看来,理想情况下,源代码文件将包含一行类似于 #include INCLUDEFILENAME …然后在gcc命令行上指定的文件名将替换为INCLUDEFILENAME文本 通过使用-D选项(例如-D INCLUDEFILENAME=“C:\TestLib\Test1.h”)在gcc命令行上定义一个名为INCLUDEFILENAME的宏,我似乎可以接

GCC降级问题

我正在尝试为Cyclone编程语言构建源代码编译器。我运行的是32位Ubuntu 12.04,默认安装为GCC4.6.3 但make由于引导实用程序中的崩溃而失败。为了解决这个问题,我正在尝试安装较旧的GCC版本 我已经使用apt-get修补了/etc/apt/sources.list并安装了gcc-3.3和g++-3.3。但当强制使用GCC 3.3时,配置脚本失败: $ export CC=gcc-3.3 $ export CXX=g++-3.3 $ ./configure checking

用于存储和递增的gcc原子扩展

是否存在任何gcc扩展以原子方式执行类似于 在C语言中,a=b++。对于这样一个简单的操作,使用互斥似乎是一种过分的杀伤力。您不需要使用任何扩展;只需使用: #包括 原子存储(&a,原子获取(&b,1)); 在第一批条目中出现了一个快速的谷歌搜索。我确实看了那个网页,但它对我的查询没有帮助。您可以使用这些扩展以原子方式执行(b++)操作,但该页中没有给出执行a=b++的方法。看起来,单独的原子存储和原子获取添加是原子的,但它们一起也是原子的吗?@mc_87,这取决于您所说的“原子”是什么意思;但

如何在GCC中禁用SSE?

我正在尝试用debian(挤压,armel)制作一个包。问题是,我的GCC似乎设置了ARM上不支持的-msse2,我不知道如何禁用它。如何更改GCC的默认标志以禁用此功能?谢谢 完全错误: Building CXX object frameworks/CoreLib/CMakeFiles/.....cpp.o cc1plus: error: unrecognized command line option "-msse2" make[2] \*\*\* [fframeworks/CoreLi

Gcc 在Windows7中为JNI编译

我正试图在Windows7下编译一个名为DLL的开源项目,以便在Java中与JNI一起使用。使用包中已经提供的makefile,Linux中的一切都可以正常工作 我的第一次搜索指向cygwin,然后我遵循了几个建议,比如,基本上告诉我使用: gcc-3 -D __int64="long long" -mno-cygwin -Wl,--add-stdcall-alias -I"<JAVA_HOME>\include" -I"<JAVA_HOME>\include\wi

架构X的GCC预定义宏

我在谷歌上搜索了gcc使用的每种架构的预定义宏列表,但没有成功。是否有这样一个列表,或者我需要为交叉编译器提供-dM。@BrettHale。这是一个答案。我们正在努力维护这样一个列表。如果您有更多最新的结果,请考虑提供帮助。。。

ARM与GCC编译

希望这还没有被问到和回答,但我只是有一个简单的问题 具体地说,如果在编译Android(它有很多C和C++)时,您使用GCC进行编译,这不是创建了基于x86的代码吗?一个使用精简指令集的ARM处理器如何能够解释此代码并像它那样运行 谢谢 GCC不只是为x86编译。它实际上编译成任何指令集。如果你想,你可以通过添加几个文件来创建一个新的 ARM并不是一个精简的指令集。这是一个完全不同的指令集。ARM有一些东西是x86没有的,反之亦然。构建gcc需要一个配置步骤,其中一部分是指定一个配置。后端负责生

使用GCC ARM工具链链接任意数据

我想链接原始二进制数据。我想把它放在一个特定的地址,或者让它链接到我在代码中定义的符号(例如char*mydata)。因为它不是一个obj文件,所以我不能简单地将它链接进去 类似的帖子()建议将objcopy与-bfdarch选项一起使用。objcopy以“架构bfdarch未知”作为响应 还有一个答案建议将对象转换为自定义LD脚本,然后从主LD脚本中包含该脚本。在这一点上,我可能只是使用一个C包含文件(这就是我现在正在做的),所以我不想这样做 我可以使用objcopy来实现这一点,还是有其他方

在使用automake的项目中使用不同版本的gcc

我正在使用automake进行我的项目。我已经安装了gcc 4.2,并且有一个到gcc-4.2的软链接作为gcc。我还在其他位置安装了GCC4.8,现在我希望我的项目在这个位置使用GCC4.8。我不想改变现有的软链接到gcc。那么,在configure.ac文件中是否有任何方法可以做到这一点。通常这不是在configure中执行的操作。configure是关于可移植性的,而您的问题不同:为您的特定机器定制构建 相反,该问题通常在运行配置时解决: ./configure CC=/path/to/o

gcc/g和x2B之间的区别是什么+;还有cc1/cc1plus?

当我编译我的项目并检查运行top所使用的资源时,大的CPU/内存占用有时被称为g++,有时被称为cc1plus。两者之间有什么区别?我是否应该直接调用cc1plus 二者的区别是什么, g++是一个编译器驱动程序。它知道如何调用实际的编译器(cc1plus)、汇编器和链接器。它不知道如何解析或编译源代码 我应该直接给cc1plus打电话吗 没有

创建能够构建动态库的可再发行GCC包

举个例子,一个程序需要能够从运行时创建的任意源文件加载动态库。该计划是根据GPL授权的。该程序应该作为一个没有任何外部依赖的包发布,例如,没有解压缩的包 理想情况下,它应该作为一个可移植的、独立于平台的IDE(当然,不同的目标需要不同的二进制文件)。目标是OSX 10.8++和Windows,它们都是32位和64位格式。我需要它只支持C和C++。 我设想它是放置在子目录中的GCC,从平台支持的脚本(如.bat文件和bash等)调用,目标是生成一个动态库,可以通过经典命令行立即加载(即DLL或动态

cygwin中gcc的正确包名是什么?

我需要在cygwin上安装gcc, 但是,当我在cygwin安装程序中搜索gcc时,我会得到几个名称中带有字符串“gcc”的结果,例如: cygwin32-gcc-ada cygwin32-gcc-core cygwin32-gcc-fortran cygwin32-gcc-g++ cygwin32-gcc-objc++ ... gcc-ada gcc-core gcc-fortran gcc-g++ ... libgcc1 minigw-gcc-core minigw-gcc-g++ ....

Gcc gdb不';不显示源文件

我有一个奇怪的问题。调试代码时,我无法查看其中一个共享库中任何函数的源代码。当我在函数上设置断点时,我点击了断点,但得到了以下输出 Breakpoint 1, omx_isend (ep=0xd10120, buffer=0x7fffffffd1d0, length=70, dest_endpoint=..., match_info=1311768467139281697, context=0x0, requestp=0x7fffffffd160) at <command-lin

Gcc 隐藏符号“\uuuu sync\u fetch\u和\u add\u 4';由DSO引用

我正在尝试在linux平台(ARM8148)上交叉编译opencv。 我遇到以下错误: warning: libQtTest.so.4, needed by ../../lib/libopencv_highgui.so.3.0.0, not found (try using -rpath or -rpath-link) /opt/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../

Gcc 使用货物构建时找不到'lcrypto'或'lssl'

2014年12月30日起的锈蚀和货物。通用条款4.8.3 我在项目目录中的cargo run上收到以下消息 error: linking with `gcc` failed: exit code: 1 note: gcc '-Wl,--enable-long-section-names' '-fno-use-linker-plugin' '-Wl,--nxcompat' '-static-libgcc' '-m64' '-L' 'C:\Program Files (x86)\Rust\bin\r

使用GCC编译针对Linux设备驱动程序的英特尔AVX指令集

我在corei7上的ubuntu上运行gcc版本4.8.2 从谷歌搜索中找到了关于AVX内部函数的信息,但我不确定这组内部函数是否可以用于Linux设备驱动程序并进行编译 如果可以的话,这里的任何人都可以告诉我makefile的正确设置是什么,以及在c源代码中包含哪些头文件来使用gcc编译这个avx 谢谢。使用这些标题 包括/*用于内核\u fpu\u begin()和内核\u fpu\u end()*/ 包括 使用此标志 -march=corei7-avx 您应该使用CPUID指令确

Gcc 为什么不';用64位MinGW g++;在我的64位PC上工作?

我正在64位Windows 8.1上使用Cygwin 我想在Cygwin环境中创建本机windows可执行文件(即,我不想处理Cygwin dll问题)。我看到Cygwin有minGW软件包,所以我下载了 i686-pc-mingw32-gcc x86_64-w64-mingw32-gcc 包裹。从帖子中我收集到i686是32位的,x86_64是64位的 我使用了i686和x86_64版本的g++来编译一个简单的hello-world程序,并且两个程序都编译无误 i686编译的可执行文件按预

-s选项在gcc编译器中实际如何工作?

gcc&g++提供命令行选项-s,以减小可执行文件的大小。但是我想知道这个-s选项到底是如何工作的?它是如何减少可执行文件的大小的?文件大小是如何减小的?在Linux系统上,gcc-s可能从中调用实用程序(从文件中删除大多数符号)。您可以通过运行gcc-v-s进行检查 要降低可执行文件的大小,还应使用-Os(除了-s)进行编译,这要求编译器优化大小。此ELF文件是什么?ELF是Linux上二进制可执行文件和目标文件的格式

gcc同时生成依赖项和对象

我使用的是GCC4.8.2,我试图同时构建对象文件和依赖项文件 这项工作: $ g++ -std=c++11 -MP -MD -c foo.cxx -o foo.o $ [ -s foo.d ] && [ -s foo.o ] && echo yay yay 但是,我不想生成foo.d,而是想生成foo.d,因此我尝试了: $ rm foo.d foo.o $ g++ -std=c++11 -MP -M -MF foo.D -c foo.cxx -o foo.o

Gcc 汇编程序模板,ASMSYMBOLCNAME和;错误:应为字符串文字“0”;

我试图像微软的汇编程序一样使用GCC的扩展ASM。在Microsoft的MASM下,我们可以执行以下操作,其中\uu FUNC是一个C变量: mov eax, __FUNC 根据§6.44.3.1输入操作数: 操作数由逗号分隔。每个操作数都有以下格式: [ [asmSymbolicName] ] constraint (cexpression) [ [asmSymbolicName] ] constraint (cexpression) 符号名称 指定操作数的符号名。通过将名称括在方

欺骗avr gcc优化选项-使用IRQ的ffunction部分

我有一个特殊的avr gcc问题,到目前为止还没有解决方案 我使用gcc选项“-ffunction sections”和链接选项“-Wl,--gc sections”。 这将避免链接代码中未使用的函数。 它与只有一些千字节闪存的微控制器完美配合 但现在我有了这样一个案例:这种优化将杀死所需的代码! 我会尽力解释这些情况 我有一个计时器中断,它每800µs执行一次操作。 8次之后,它将增加一个变量“Ticks”以生成时钟 ISR(TIMER1_COMPA_vect) { count

Gcc 汇编推送指令

问题 考虑到GCC编译器、AT&T语法和32位汇编,哪两条指令等效于: Push %eax 尝试: 我认为这是以下两种情况: Addl $0x4, %esp movl %eax, -0x4(%esp) 有人能证实吗?如果这是错误的,请有人给我指出正确的方向。谢谢大家! 应该是 leal -4(%esp), %esp; movl %eax, (%esp); sub可以更改标志 当您按下时,堆栈在内存中向下增长,而不是向上增长。尝试subl$0x04,%esp和movl%eax,(%esp)

GCC可以为AIX交叉编译吗?

我正在尝试将GCC构建为AIX的交叉编译器;主机和构建平台是Linux x86_64,目标是powerpc-aix5.2.0。我已经设法用本机AIX6.1头(来自/usr/include)和libs(仅/usr/lib/{crt0.o、crt0_64.o、libc.a、libc_r.a、libpthreads.a})交叉编译了Binutils 2.20.1和GCC4.4.7。然后,gcc正确地将简单的C代码(如“Hello,world!”)交叉构建到独立的可执行文件中,但它拒绝交叉构建共享对象:

升级gcc版本后出现linux内核对齐异常错误

我正在使用yoctojethro为OMAP3630处理器构建定制的linux发行版。我有一个预编译的linaro工具链版本gcc-4.7.3,我的内核版本是3.2。我正在尝试将我的交叉编译器升级到gcc-4.8.4(使用yocto提供的gcc版本,而不是linaro) 所有内容似乎都正确编译,但当我运行内核时,会收到以下对齐异常错误消息: [ 0.516387] Unhandled fault: alignment exception (0x001) at 0x0073656b [

Gcc 如何纠正mno cygwin错误?

我正在用GCC和Make在windows中编译一个库。 当我运行make时,出现以下错误: 无法识别的命令行选项'-mno cygwin' 我看到了,但看起来不一定是同一个问题,我不知道如何将我的系统降级到一个GCC(或Make)版本,该版本支持编译所需的标志 请有人给我指出正确的方向,或者如果你遇到了这个问题,请提供一个解决方案 我正在运行Windows 8.1 pro、GCC 5.4.0、make 4.2.1。 如果需要帮助,我可以发布更多信息。当前的cygwin gcc仅为cygwin本身

Gcc /usr/bin/ld:找不到-lglscblas

看,问题是,没有像文件这样的东西可以链接到命名的glscblas,因为这是一个打字错误 以下是Rstudio调用gcc时出现的问题示例: install.packages('devtools') gcc -std=gnu99 -shared -L/usr/lib/R/lib -L/usr/lib/x86_64-linux-gnu -lgsl -lglscblas -o openssl.so aes.o base64.o bignum.o cert.o compatibility.o diffie

Gcc ARM汇编-简单闪烁程序拒绝执行部分代码

我正在尝试闪烁LPC4088上的LED,并且我已经正确准备了外围寄存器。现在是闪烁LED的时候了,这是应该闪烁的循环: blink: @ In register SET1 (0x20098038) we set bits: @ bit 13 = 1 > sets pin P1_13 to high state ldr r0, =0x20098038 ldr r1, [r0] ldr r2, =0x2000 orr r1, r2

如何在RHEL7上将GCC从4.8更新到8.2

我希望将我的GCC更新到最新版本(从今天起为8.2版),但是当我尝试使用yum update GCC时,它没有任何新的包要更新。我也没有任何帮助看海湾合作委员会的网站。任何帮助都将不胜感激 Red Hat Enterprise Linux是一种“企业”操作系统,其设计目的是长期保持稳定和相似。这意味着默认情况下,您不会得到“最新和最好的”,而是一个已知的良好实现,它在特定RHEL版本中长期保持默认状态。通常,只有升级RHEL才能获得实质性的软件升级。不幸的是,目前还没有RHEL8 允许您切换到更

如何限制GCC中的自动矢量化级别?

换句话说,在仍然通过显式内在调用使用AVX512时,是否可以将自动矢量化指令(通过-fast math-ftree vectorize获得)限制为类似于AVX 目前, 如果没有-mavx512f,GCC会失败,说它无法在没有avx-512f支持的情况下编译我的程序。很公平 使用-mavx512f,GCC开始在任何地方使用它 我还没有找到任何选项可以让GCC使用显式的AVX512intrinsic,同时将自身限制为自动矢量化的其他内容 编辑:只是为了提供更多的上下文…我有skylake-av

Gcc 如何强制静态库包含it依赖项?

我用gcc和ar构建了自己的静态库,如下所示 g++ \ ... list of library sources ... \ ... a lot of -L -l -I -D options etc... \ -c \ && ar crf ./lib/libpackager.a *.o g++ \ myApp.cpp \ ... same -L -l -I options as in library ... \ -L. -

Gcc 如何修复:/bin/ld:找不到-lgfortran错误:ld返回了1个退出状态

我正试图在Linux服务器上用gfortran编译一个Fortran代码(包),我没有根访问权限。 它有一个Makefile,当我运行make时,我得到了这个错误 /bin/ld: cannot find -lgfortran collect2: error: ld returned 1 exit status 但gcc已经安装在集群上 gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/

Gcc cygwin64::./configure returns";配置:退出77“;

我已经安装了Cygwin64,现在我想安装 所以我下载了它,解压缩了文件,但当我运行/configure时,它会显示: $ ./configure Configuring extundelete 0.2.4 configure: error: in `/cygdrive/c/Users/franc/Desktop/extundelete-0.2.4': configure: error: C++ compiler cannot create executables See `config.log

Gcc 如何配置GNU Autotools在Centos7上以32位编译程序?

我在VLE上做所有这些,下面是我的工作: 运行操作系统:Linux Centos 7 通用条款:4.8.5和7.1.0 我正试图使用GNU自动工具(libtool、autoconf、automake)使用gcc-7.1.0构建一个32位的项目。此外,作为一项要求,我必须在Centos 7上执行此操作,并使用gcc-7.1.0。 显然,可以通过yum正式升级的gcc的最新版本是4.8.5。但是,我成功地从官方源代码安装了gcc-7.1.0,甚至在configure期间包括了--启用多库--list

GCC只能为一个特定的体系结构和操作系统编译代码吗?

GCC是从不同编程语言生成机器代码的编译器集合。为此,您必须编译编译器以在您的体系结构和操作系统上运行。但您还必须定义生成的机器代码和文件格式 现在我的问题是: GCC的输出文件是否仅可在GCC编译时配置 GCC是否可以编译为支持多种体系结构和文件格式 gcc和binutils设计用于一次构建一个体系结构/系列。因此,如果您将它们构建为ARM的交叉编译器,则无法构建mips,但您可以有多个/多个安装,因此您也可以构建一个以mips为目标的安装并使用该安装 clang/llvm如果您构建时不告诉它

Gcc gfortran调用fortran dll时读取0x0000000a时发生访问冲突错误

1.FORTRAN源代码(main.for) 制作动态链接库 调用dll 为什么??如果fortran源文件是由Compad Visual fortran或Inter fortran编译的,那么它工作得很好。但是,它不适用于gcc或gfortran。怎么了?您正在使用特殊指令来更改调用约定 !DEC$ATTRIBUTES DLLEXPORT,STDCALL :: mysum !DEC$ATTRIBUTES VALUE :: a, b 但是,这些仅对DEC编译器及其子代“英特尔F

Gcc ARM交叉编译器在标准C函数中生成无效的分支目标

我正在开发一个定制的嵌入式项目(使用PlatformIO来设置构建环境),我发现对标准C函数(如memset、memcpy)的调用会生成虚假代码。反汇编显示,这两个函数(以及我从stdlib尝试过的其他函数)中的指令无条件地分支到不包含代码的位置,这当然会导致MCU(Cortex M4、Atmel D51)在尝试执行无意义代码时出现硬故障。没有编译器错误,只有由于指令无效而以硬故障形式出现的运行时错误 我认为我的编译环境有问题,因为PlatformIO有一些库用于同一处理器的Adafruit板,

  1    2   3   4   5   6  ... 下一页 最后一页 共 159 页