过去几天我一直有这个问题,我无法理解这里发生的事情,或者是什么问题。 我有这些标志的makefile: CC = arm-linux-gnueabihf-gcc-4.6 FLAGS = -O3 -march=armv7-a -mtune=cortex-a9 -mfpu=neon -ftree-vectorize -mfloat-abi=softfp -std=gnu99 我有一个.a文件中的库,它有一些目标文件,我所需要做的就是将它们与我的可执行文件链接起来。 我知道原型和所有这些,唯一抱怨的是以下几点: /usr/bin/ld: error: *EXECUTABLE* uses VFP register arguments, *OBJECTFILE* does not /usr/bin/ld: failed to merge target specific data of file *OBJECTFILE* 当我不使用-mfloat-abi = softfp时,会出现另一个与浮点寄存器有关的错误。 有没有人有任何想法是什么导致这一点,我可以做些什么来解决这个问题,如使我的可执行文件不使用虚拟浮点寄存器参数? x@x:~/Desktop/perf_test$ make arm-linux-gnueabihf-gcc-4.6 -c -O3 -march=armv7-a -mtune=cortex-a9 -mfpu=neon -ftree-vectorize -std=gnu99 -mfloat-abi=softfp perf_test.c ../baseline/util.c arm-linux-gnueabihf-gcc-4.6 -o […]
我已经Googled围绕Go网站,但我似乎无法findGo的非凡build设时间的解释。 他们是语言function(或缺乏),高度优化的编译器,或其他产品? 我并不是要去推广Go; 我只是好奇。
我目前正在做一个大项目,并保持所有这些包括警卫让我疯狂! 用手写字是浪费时间。 尽pipe许多编辑可以产生包括守卫,但这并没有多大帮助: 编辑器根据文件名生成警卫符号。 当您在不同的目录中具有相同的文件名标题时,会出现问题。 他们两人将得到相同的包括后卫。 将目录结构包含在警卫符号中需要编辑器的一些奇特的方法,因为macros中的斜杠和反斜杠不是最好的。 当我不得不重新命名一个文件时,我应该重命名所有的包括守卫(在ifndef中,定义和理想的endif的评论)。 烦人。 预处理器充斥着大量的符号,而不知道它们的意思。 尽pipe如此,定义只包含一次,编译器每次遇到头文件时仍然会打开头文件。 包括守卫不适合命名空间或模板。 事实上,他们正在颠覆命名空间! 你有一个机会,你的警卫符号将不是唯一的。 在单个目录中的程序包含less于1000个标题的时候,它们可能是可以接受的解决scheme。 但是现在呢? 这是古老的,与现代编码习惯无关。 最让我困扰的是这个问题几乎可以通过#pragma一次指令来解决。 为什么它不是一个标准?