但在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
compiler-warnings
对应的代码是
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
gcov的输出表明,在10条线路中,70%的线路被执行
但我的代码有10多行
它不计算大括号,else语句
请帮助..gcov只计算实际进入二进制的代码行-大括号只是语法的一部分
可能正在优化/编译else
标签: Gcc
sparcpredefined-macro
运行在不同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
在指令集和模拟的简单性方面。我想实现一个虚拟CPU,并想知道为什么不模拟现有的CPU,以便能够为其编译C代码。可能是AVR或类似的AVR芯片。可能是Ti系列的产品。(面向FPGA的32位处理器)非常小。GCC支持(最初),安东尼·格林为实验而发明的一种小型建筑
您也可以按照他发明自己的小型简单CPU和GCC端口的步骤进行操作。是一个很好的目标,因为它是专门为GCC设计的理想目标。我是作者,很乐意回答任何问题。moxielogic.com的绿色这可能不是一个罕见的问题;我希望大多数CPU/机器模拟
标签: Gcc
cross-compilingx86-64ldbinutils
我正在尝试创建一个在本地机器上运行的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
我看到一些事情可能会出问
我正在尝试在redhat 5.x系统上安装gcc4-4.1.2-44.EL4_8.1.i386.rpm,但需要很多依赖项
dependency - kernel-headers-2.2.19-1.0.291.i386.rpm, installed okay
dependency - glibc-headers-2.8.90-11.i386.rpm,
[root@bruce glibc-headers]# rpm -ivh glibc*
我想用cloog和ppl安装GCC4.6.2。我的系统中安装了这两个库。当我尝试用ppL= /ur/LIB来做 //Debug(启用配置语言= C,C++)时,我得到一个错误找不到目录“/Ur/LIb/LIB”或“/UR/LIB/IONE”< /C> >,所以我尝试了代码> > /配置-启用语言= C,C++ + PPL——用CLUG。在这种情况下,我无法找到可用的ppl。有人能帮我吗?你没说你的系统是什么吗?你也没有说你检查了什么以确保你真的安装了库?所以,这里有一个常见的问题可能是你的问题
我正在使用创建交叉编译器
我学习了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
我遇到了一个非常奇怪的问题,我知道从远处可能很难诊断。但任何提示都会有所帮助
说到这里,我的问题是:
当我运行valgrind来执行我的程序时,会抛出一个异常。但是,当我直接从shell调用程序时,它运行良好
我已经尝试使用valgrind的vgdb来研究为什么会发生这种异常。但这只允许我在异常发生后调查变量,因为在我将gdb附加到valgrind(不使用continue)并逐步完成代码之后,我还没有找到启动gdb的好方法
我已经尝试重新创建引发异常的代码段,但是使用相同的变量内容,我不会触发异
这是我第一次尝试在终端中编译源代码(我使用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
在Windows下使用GCC,我希望能够在GCC命令行(或从手动管理的makefile)上指定要包含在正在编译的文件中的特定包含文件的名称。在我看来,理想情况下,源代码文件将包含一行类似于
#include INCLUDEFILENAME
…然后在gcc命令行上指定的文件名将替换为INCLUDEFILENAME文本
通过使用-D选项(例如-D INCLUDEFILENAME=“C:\TestLib\Test1.h”)在gcc命令行上定义一个名为INCLUDEFILENAME的宏,我似乎可以接
标签: Gcc
ldconfiguredowngradecyclone
我正在尝试为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扩展以原子方式执行类似于
在C语言中,a=b++。对于这样一个简单的操作,使用互斥似乎是一种过分的杀伤力。您不需要使用任何扩展;只需使用:
#包括
原子存储(&a,原子获取(&b,1));
在第一批条目中出现了一个快速的谷歌搜索。我确实看了那个网页,但它对我的查询没有帮助。您可以使用这些扩展以原子方式执行(b++)操作,但该页中没有给出执行a=b++的方法。看起来,单独的原子存储和原子获取添加是原子的,但它们一起也是原子的吗?@mc_87,这取决于您所说的“原子”是什么意思;但
我正在尝试用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
我正在尝试在运行Linux2.6.31.8ARMV5Tel的(之后)平台上编译GCC4.7.2
不幸的是,make抛出了很多错误,首先是
gcc -c -DIN_GCC_FRONTEND -g -fkeep-inline-functions -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-formIn file included from ../
我正试图在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
标签: Gcc
cross-compilingpredefined-macro
我在谷歌上搜索了gcc使用的每种架构的预定义宏列表,但没有成功。是否有这样一个列表,或者我需要为交叉编译器提供-dM。@BrettHale。这是一个答案。我们正在努力维护这样一个列表。如果您有更多最新的结果,请考虑提供帮助。。。
希望这还没有被问到和回答,但我只是有一个简单的问题
具体地说,如果在编译Android(它有很多C和C++)时,您使用GCC进行编译,这不是创建了基于x86的代码吗?一个使用精简指令集的ARM处理器如何能够解释此代码并像它那样运行
谢谢 GCC不只是为x86编译。它实际上编译成任何指令集。如果你想,你可以通过添加几个文件来创建一个新的
ARM并不是一个精简的指令集。这是一个完全不同的指令集。ARM有一些东西是x86没有的,反之亦然。构建gcc需要一个配置步骤,其中一部分是指定一个配置。后端负责生
我想链接原始二进制数据。我想把它放在一个特定的地址,或者让它链接到我在代码中定义的符号(例如char*mydata)。因为它不是一个obj文件,所以我不能简单地将它链接进去
类似的帖子()建议将objcopy与-bfdarch选项一起使用。objcopy以“架构bfdarch未知”作为响应
还有一个答案建议将对象转换为自定义LD脚本,然后从主LD脚本中包含该脚本。在这一点上,我可能只是使用一个C包含文件(这就是我现在正在做的),所以我不想这样做
我可以使用objcopy来实现这一点,还是有其他方
我正在使用automake进行我的项目。我已经安装了gcc 4.2,并且有一个到gcc-4.2的软链接作为gcc。我还在其他位置安装了GCC4.8,现在我希望我的项目在这个位置使用GCC4.8。我不想改变现有的软链接到gcc。那么,在configure.ac文件中是否有任何方法可以做到这一点。通常这不是在configure中执行的操作。configure是关于可移植性的,而您的问题不同:为您的特定机器定制构建
相反,该问题通常在运行配置时解决:
./configure CC=/path/to/o
当我编译我的项目并检查运行top所使用的资源时,大的CPU/内存占用有时被称为g++,有时被称为cc1plus。两者之间有什么区别?我是否应该直接调用cc1plus
二者的区别是什么,
g++是一个编译器驱动程序。它知道如何调用实际的编译器(cc1plus)、汇编器和链接器。它不知道如何解析或编译源代码
我应该直接给cc1plus打电话吗
没有
举个例子,一个程序需要能够从运行时创建的任意源文件加载动态库。该计划是根据GPL授权的。该程序应该作为一个没有任何外部依赖的包发布,例如,没有解压缩的包
理想情况下,它应该作为一个可移植的、独立于平台的IDE(当然,不同的目标需要不同的二进制文件)。目标是OSX 10.8++和Windows,它们都是32位和64位格式。我需要它只支持C和C++。
我设想它是放置在子目录中的GCC,从平台支持的脚本(如.bat文件和bash等)调用,目标是生成一个动态库,可以通过经典命令行立即加载(即DLL或动态
这是我的源代码a.c:
#include <stdio.h>
#include <time.h>
#define N 1000
int p[N] = {0};
int a[N] = {0};
void main(){
long int i;
int acc;
time_t t_start, t_end;
for(i = 0; i < N; ++i){
a[i] = i;
}
我需要在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++
....
我有一个奇怪的问题。调试代码时,我无法查看其中一个共享库中任何函数的源代码。当我在函数上设置断点时,我点击了断点,但得到了以下输出
Breakpoint 1, omx_isend (ep=0xd10120, buffer=0x7fffffffd1d0,
length=70, dest_endpoint=..., match_info=1311768467139281697,
context=0x0, requestp=0x7fffffffd160)
at <command-lin
我正在尝试在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/../../../
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
我在corei7上的ubuntu上运行gcc版本4.8.2
从谷歌搜索中找到了关于AVX内部函数的信息,但我不确定这组内部函数是否可以用于Linux设备驱动程序并进行编译
如果可以的话,这里的任何人都可以告诉我makefile的正确设置是什么,以及在c源代码中包含哪些头文件来使用gcc编译这个avx
谢谢。使用这些标题
包括/*用于内核\u fpu\u begin()和内核\u fpu\u end()*/
包括
使用此标志
-march=corei7-avx
您应该使用CPUID指令确
我正在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编译的可执行文件按预
标签: Gcc
g++command-line-interface
gcc&g++提供命令行选项-s,以减小可执行文件的大小。但是我想知道这个-s选项到底是如何工作的?它是如何减少可执行文件的大小的?文件大小是如何减小的?在Linux系统上,gcc-s可能从中调用实用程序(从文件中删除大多数符号)。您可以通过运行gcc-v-s进行检查
要降低可执行文件的大小,还应使用-Os(除了-s)进行编译,这要求编译器优化大小。此ELF文件是什么?ELF是Linux上二进制可执行文件和目标文件的格式
我使用的是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的扩展ASM。在Microsoft的MASM下,我们可以执行以下操作,其中\uu FUNC是一个C变量:
mov eax, __FUNC
根据§6.44.3.1输入操作数:
操作数由逗号分隔。每个操作数都有以下格式:
[ [asmSymbolicName] ] constraint (cexpression)
[ [asmSymbolicName] ] constraint (cexpression)
符号名称
指定操作数的符号名。通过将名称括在方
我有一个特殊的avr gcc问题,到目前为止还没有解决方案
我使用gcc选项“-ffunction sections”和链接选项“-Wl,--gc sections”。
这将避免链接代码中未使用的函数。
它与只有一些千字节闪存的微控制器完美配合
但现在我有了这样一个案例:这种优化将杀死所需的代码!
我会尽力解释这些情况
我有一个计时器中断,它每800µs执行一次操作。
8次之后,它将增加一个变量“Ticks”以生成时钟
ISR(TIMER1_COMPA_vect)
{
count
问题
考虑到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
cross-compilingaix
我正在尝试将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!”)交叉构建到独立的可执行文件中,但它拒绝交叉构建共享对象:
我正在使用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和Make在windows中编译一个库。
当我运行make时,出现以下错误:
无法识别的命令行选项'-mno cygwin'
我看到了,但看起来不一定是同一个问题,我不知道如何将我的系统降级到一个GCC(或Make)版本,该版本支持编译所需的标志
请有人给我指出正确的方向,或者如果你遇到了这个问题,请提供一个解决方案
我正在运行Windows 8.1 pro、GCC 5.4.0、make 4.2.1。
如果需要帮助,我可以发布更多信息。当前的cygwin gcc仅为cygwin本身
看,问题是,没有像文件这样的东西可以链接到命名的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
我正在尝试闪烁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
我正在尝试使用CMake安装caffe,但当我运行make all(从build目录运行CMake..后)时,我收到以下错误:
me@gimli:~/Downloads/caffe/build$ make all
[ 1%] Built target caffeproto
[ 1%] Linking CXX shared library ../../lib/libcaffe.so
/usr/bin/x86_64-linux-gnu-ld: /usr/local/lib/libleveldb.
我希望将我的GCC更新到最新版本(从今天起为8.2版),但是当我尝试使用yum update GCC时,它没有任何新的包要更新。我也没有任何帮助看海湾合作委员会的网站。任何帮助都将不胜感激 Red Hat Enterprise Linux是一种“企业”操作系统,其设计目的是长期保持稳定和相似。这意味着默认情况下,您不会得到“最新和最好的”,而是一个已知的良好实现,它在特定RHEL版本中长期保持默认状态。通常,只有升级RHEL才能获得实质性的软件升级。不幸的是,目前还没有RHEL8
允许您切换到更
换句话说,在仍然通过显式内在调用使用AVX512时,是否可以将自动矢量化指令(通过-fast math-ftree vectorize获得)限制为类似于AVX
目前,
如果没有-mavx512f,GCC会失败,说它无法在没有avx-512f支持的情况下编译我的程序。很公平
使用-mavx512f,GCC开始在任何地方使用它
我还没有找到任何选项可以让GCC使用显式的AVX512intrinsic,同时将自身限制为自动矢量化的其他内容
编辑:只是为了提供更多的上下文…我有skylake-av
我用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. -
我正试图在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/
我已经安装了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
g++centos732bit-64bitautotools
我在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和binutils设计用于一次构建一个体系结构/系列。因此,如果您将它们构建为ARM的交叉编译器,则无法构建mips,但您可以有多个/多个安装,因此您也可以构建一个以mips为目标的安装并使用该安装
clang/llvm如果您构建时不告诉它
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
我正在开发一个定制的嵌入式项目(使用PlatformIO来设置构建环境),我发现对标准C函数(如memset、memcpy)的调用会生成虚假代码。反汇编显示,这两个函数(以及我从stdlib尝试过的其他函数)中的指令无条件地分支到不包含代码的位置,这当然会导致MCU(Cortex M4、Atmel D51)在尝试执行无意义代码时出现硬故障。没有编译器错误,只有由于指令无效而以硬故障形式出现的运行时错误
我认为我的编译环境有问题,因为PlatformIO有一些库用于同一处理器的Adafruit板,
1 2 3 4 5 6 ...
下一页 最后一页 共 159 页