Tag: compilation

当其中一个失败时,停止多个文件GCC编译

我创建了以下bash构建脚本文件: BLD_INCLUDE=”-I..source/module1 -I..source/module2″ SRC_MOD1=”$(find ../source/module1 -name ‘*.c’)” SRC_MOD2=”$(find ../source/module2 -name ‘*.c’)” BLD_SOURCES=”../source/program.c $SRC_MOD1 $SRC_MOD2″ BLD_LINKER=”” #if there is any need of linker – irrelevant here gcc $BLD_FLAGS $BLD_INCLUDE -o outputobject $BLD_SOURCES $BLD_LINKER 我正在构建这样的因为我需要编译很多文件。 问题是,当使用gcc执行多个文件时,如上所述,如果其中一个文件的编译失败,它会提示错误以及“编译终止”,然后继续执行其他文件。 我想要的行为是,即使其中一个文件无法编译,整个编译也会停止。 也就是说,在我的情况下:假设缺少一个头文件。 现在gcc尝试编译第一个.c ,发现缺少头文件,提示 致命错误:文件丢失错误编译终止。 然后继续执行其他.c文件。 由于头文件总共缺失,它不断给我这个错误并继续执行。 我希望这个构建脚本在编译失败时立即终止,即使是其中一个文件也是如此。 编辑: 与多个文件编译错误时不是Stop GCC的重复,它起源于这个问题本身(阅读评论)。 这个问题甚至可以追溯到这一点。

如何在Opensuse 12.2上构建Gotoblas2

使用默认的make文件在我的x86_64上构建GotoBlas2时,遇到以下构建错误: gcc -O2 -DEXPRECISION -m128bit-long-double -Wall -m64 -DF_INTERFACE_GFORT -fPIC -DSMP_SERVER -DMAX_CPU_NUMBER = 8 -DASMNAME = -DASMFNAME = _ -DNAME = _ -DCNAME = -DCHAR_NAME = \“_ \” – DCHAR_CNAME = \“\”-I .. -w -o linktest linktest.c ../libgoto2_nehalemp-r1.13.so -L / usr / lib64 / gcc / x86_64-suse-linux / 4.7 -L / usr / lib64 / gcc […]

编译python hmmlearn包的C代码时出错

我在安装hmmlearn软件包时遇到了一些麻烦(在虚拟环境中); 它似乎与底层的C代码有关。 使用pip安装包很好,但是当我尝试导入核心类时,我收到一个错误: In [1]: import hmmlearn In [2]: from hmmlearn import hmm ————————————————————————— ImportError Traceback (most recent call last) in () —-> 1 from hmmlearn import hmm /export/hdi3/home/krono/envs/sd/lib/python2.7/site-packages/hmmlearn/hmm.py in () 19 from sklearn.utils import check_random_state 20 —> 21 from .base import _BaseHMM 22 from .utils import iter_from_X_lengths, normalize 23 /export/hdi3/home/krono/envs/sd/lib/python2.7/site-packages/hmmlearn/base.py in () 11 from […]

在cygwin上编译hsdis(Java HotSpot反汇编程序插件)时,错误的reloc地址0x0

我正在尝试编译JVM需要反汇编JIT编译代码的hsdis-amd64.dll库。 我按照这个接受的答案。 我安装了cygwin 下载了openjdk-7u40-fcs-src-b43-26_aug_2013.zip 并下载了binutils-2.24.tar.gz 我创建了一个这样的文件夹结构: + +- hsdis // unzipped dir hotspot/src/share/tools/hsdis of openjdk zip +- binutils-2.24 // unzipped binutils-2.24.tar.gz 首先,我尝试使用以下方法编译它: $ make OS=Linux MINGW=x86_64-w64-mingw32 BINUTILS=../binutils-2.24 但它失败了 /Linux-amd64/opcodes/libopcodes.a build/Linux-amd64/libiberty/libiberty.a hsdis.c:32:20: fatal error: sysdep.h: No such file or directory #include ^ compilation terminated. 所以我应用了此接受答案中提供的补丁并再次尝试。 编译再次失败 In file included from hsdis.c:34:0: build/Linux-amd64/bfd/bfd.h:35:2: error: #error config.h must […]

obfile的Makefile C子目录规则

我运行一个简单的Makefile没有问题: CC=gcc CFLAGS= -std=c99 -ggdb -Wall -I. DEPS = hellomake.h OBJ = hellomake.o hellofunc.o %.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) hellomake: $(OBJ) gcc -o $@ $^ $(CFLAGS) 这些文件位于主项目的目录中: ./project/Makefile ./project/hellomake.c ./project/hellomake.h 然后我尝试组织文件,并把事情如下: ./project/Makefile ./project/src/hellomake.c ./project/include/hellomake.h 和额外的子目录目录: ./project/lib ./project/obj 然后是新版本的Makefile: IDIR =include CC=gcc CFLAGS= -std=c99 -ggdb -Wall -I$(IDIR) ODIR=obj LDIR =lib LIBS=-lm _DEPS […]

如何编译GnuTLS

我试图在Centos 6.2上多次编译GnuTLS库,但没有运气。 这些是步骤: 我下载了Nettle 2.4 [root@localhost opt]# wget http://www.lysator.liu.se/~nisse/archive/nettle-2.4.tar.gz [root@localhost nettle-2.4]# tar zxvf nettle-2.4.tar.gz [root@localhost nettle-2.4]# cd nettle-2.4 [root@localhost nettle-2.4]# ./configure –enable-shared –prefix=/usr Version: nettle 2.4 Host type: x86_64-unknown-linux-gnu ABI: 64 Assembly files: x86_64 Install prefix: /usr Library directory: ${exec_prefix}/lib64 Compiler: gcc Shared libraries: yes Public key crypto: no 我运行命令make和make install 我下载了最新的GnuTLS ./configure –with-libnettle-prefix=/usr hecking […]

切换案例vs if else

我想知道下面的代码编译成程序集的方式是否有任何不同。 我听说switch-case比if else更有效,但在这个例子中我不太确定是否会出现这种情况。 if(x==1){ … }else if(x==2){ … }else{ … } 和 switch(x){ case 1: … break; case 2: … break; default: … }

‘%d’需要类型为’int’的参数,但参数2的类型为’long unsigned int’

我一直收到编译警告,但我不知道如何解决它: ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [ 程序运行正常,但我仍然收到编译警告: /* Sizeof.c–Program to tell byte size of the C variable */ #include int main(void) { printf(“\nA Char is %d bytes”, sizeof( char )); printf(“\nAn int is %d bytes”, sizeof( int )); printf(“\nA short is %d bytes”, sizeof( short […]