1. keil4每次build target 都是全编译是怎么回事啊每次花很长时间啊,谢谢!!!
全编译,顾名思义,就是把工程里所有的文件都编译一遍,不管这个文件是否有过改动,所以时间很长,因为这个过程是编译--链接---生成HEX文件,所以,如果你文件很多,代码很多,时间就很长。
而半编译是只对你改动过的文件进行重新的编译,所以,过程是
编译部分文件--重新链接--生成HEX.
如果你不是把Keil的优化等级调到了8级及以上,用半编译完全没问题。
2. golang如何把全部依赖都编译进一个文件
个人觉得golang十分适合进行网游服务器端开发,写下这篇文章总结一下。从网游的角度看:要成功的运营一款网游,很大程度上依赖于玩家自发形成的社区。只有玩家自发形成一个稳定的生态系统,游戏才能持续下去,避免鬼城的出现。
3. 求助,WPS怎么都编译不过
WRF最初的安装步骤,适合初学者
WRF(Weather Research and Forecasting Model),是由美国国家大气研究中心(NCAR)和美国国家海洋和大气管理局(NOAA)共同开发的数值模式。
该模式运行于linux或UNIX之类的环境下;或者在windows系统下安装虚拟机,虚拟linux环境进行编译运行。
像大多数linux下的开源软件,官方发布的WRF是源码包,需要先编译才能够生成可执行文件进而运行模式。
以下是从下载到编译的最初步骤。
工具/原料
linux(或UNIX、AIX)之类系统的电脑或服务器一台(需已安装NETCDF)
方法/步骤
1
如果你自己安装了linux系统,这一步可以直接跳过;
如果你知道如何通过xmanager或其他ssh工具连接到自己能够访问的linux服务器,这一步可以跳过。
如果你既没有自己的linux系统,又不会使用ssh工具连接已有的linux(UNIX/AIX)服务器,这一步是必须看的。
以xmanager为例(软件请自行搜索下载)
安装完成后运行Xshell,点击新建(如图)
在Host处填入服务器地址,User Name和Password处分别填入你的账号和密码,点击确定。
选择刚刚添加好的服务器,点击Connect,成功连接服务器。
2
下载WRF安装包,和WRF的预处理系统WPS(必需)的安装包。
首先访问网址:
如果是第一次登陆,点击New Users,否则选Returnning Users。
3
若选了New Users,填写注册信息:
4
点击下一步。
5
下载WRF和WPS源码包(.tar格式)。
6
下载WPS需要的地理数据包,第二列解压后约49G,如果磁盘空间紧张,选第三列(如图)。
7
至此,下载完成,以下将下载好的三个压缩包上传到服务器自己可以访问的目录下。(自己电脑为linux系统的跳过)
8
回到Xshell,点击图示图标,打开Xftp。
Xftp界面下,左侧找到压缩包,拖动到右侧即可。
以下斜体为Xshell(或linux shell)中输入的命令!!
Xshell中,进入压缩包所在的目录,输入:tar zxvf WRFV3.6.TAR.gz
或者某些系统中需要分两条命令:gunzip WRFV3.6.TAR.gz 然后 tar xvf WRFV3.6.TAR。
(小技巧,文件名不需要输全,输入头几个字母,按下Tab键,会自动补齐)
生成WRFV3目录,ls如下:
WPS 和地理数据用同样的方法解压(tar zxvf WPSV3.6.TAR.gz)。其中地理数据在运行模式的时候才需要,编译安装用不到,因此本文不讲。
cd WRFV3,进入WRF目录,
ls 查看目录内容
其中,configure clean compile三个文件为可执行文件。
以下开始编译WRF
./configure
输入数字后回车,选择所用的fortran 和c编译器(WRF代码由fortran和c语言写成)。图中我用的是AIX系统,用的IBM自己的xlf 和xlc编译器。
其中serial是单线程运算,运算速度慢,但是编译简单,一般不用,初次接触可尝试。
dmpar是分布内存式并行,相当于多台电脑组成cluster,每个cpu都有自己的内存。
smpar是共享内存式并行,相当于服务器中内存和cpu不在一起。
自己具体情况咨询服务器管理员,如果是自己的PC,选smpar。
接下来输入数字选择模式区域是否嵌套一般选1.
至此configure完成。
configure的作用是生成configure.wrf文件,告诉接下来的compile过程:使用哪些编译器,编译器在哪儿,以及编译过程中使用的工具都在哪,编译使用哪些编译参数等等等。
一般configure都能完成,接下来就是compile,也就是编译过程。
输入命令:
./compile wrf
或者如果你要模拟实际个例,输入:
./compile em_real
这一过程一般需要花半小时或更久;还有可能发生各种问题,相应问题需要自己google或者上论坛咨询。一般需要修改 configure.wrf的内容。另外记得编译不成功的话,需要 ./clean 删除上一次编译生成的中间文件。祝你好运。
如果正常完成,会在main目录下生成 wrf.exe,如果是编译的em_real,还会生成real.exe。
至此WRF编译完成。
以下开始编译WPS。
首先进入WPS目录:
类似的:
./configure
然后选择是否需要并行和是否支持GRIB2格式。这个并行于WRF的并行是独立的,互不影响。GRIB2格式看自己的资料而定。一般不支持GRIB2的话编译出问题的可能性小一些。
完成后会生成configure.wps。其中WRF_DIR标识了WRF的目录,需要WRF正确编译了,并且路径正确指定才可以。
接下来是编译WPS
./compile
正常完成的话会在WPS目录下生成geogrid.exe ungrib.exe 和 metgrid.exe 三个文件(其实是三个链接,比如geogrid.exe是实际存在于geogrid/src/geogrid.exe。是否正常完成编译以源文件是否存在为准)。
另外,util目录下会生成若干工具(详见README文件)。如果某些不能正常生成,也不会影响以后的运行WRF。
至此,当你有了:
WPS/目录下的 geogrid.exe ungrib.exe 和 metgrid.exe
WRFV3/main/目录下的wrf.exe 和real.exe
你就完成了WRF的基本编译安装,可以愉快的进行下一个步骤:进行模拟运算了。
,
4. 为什么我都编译不了
你编译器不存在这个头文件。你引用 了当然编译错误了 编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令include "stdafx.h"前的代码都是预编译的,它跳过include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。 因此,所有的MFC实现文件第一条语句都是:include "stdafx.h"。 单独将StdAfx.cpp重新编译一次
5. 计算机二级c语言上机三道题都编译运行出结果,而且结果都正确了为什么还没过
全国计算机等级考试二级c的程序题共有三道,分别是填空、改错、编程,分值方面填空占18分,改错18分,编程24分,总分60分。而卷面总分(选择+程序)60分以上,才会判定成绩就合格,才能够领到证书。
各题详细答题方式和评分准则如下:
1、填空题:
答题方式:
在指定位置,也就是标记有类似
/********************found*************************/
for(i=0; ____1____ ; i++)
这种位置作答。
答题时,将“____1____”双引号内的部分完全删除,然后把作答的答案填补进去,也就是“将类似__1__这种位置标记替换为作答的答案”。
题面会给出“例如输入***数据,得到***数据”的注解,可以借此编译运行程序,通过输入和输出的结果来判定程序是否正确。
评分准则:
填空题的评分准则并非以程序本身“能否正确运行”为准则,而是通过类似”对比答题的程序文本与命题组答案,逐行按比例给分“的方式来评分,也就是很多人所谓的“逐项(或逐个答题位置给分)“。
上述描述信息量过大,下面举例说明:
①题面有明文要求,只允许在指定位置作答,不许添加或删除空格、回车之类的字符,不许增减程序代码行数,更不许改动题面的程序原始代码。
例如:
题面如下:
int i,j,sum=0;
/**************found********************/
for(i=0; __1__ ;i++) //假设答案应为i<10或其他等价写法
sum+=i;
答题后排版如下:
int i,j,sum=0;
/**************found********************/
for(i=0; i<10 ;i++) sum+=i; //注意这里删除了一个回车符
卷面要求对应行数(第3行)应为
for(i=0; i<10 ;i++)
评分时判定该行内容为
for(i=0; i<10 ;i++) sum+=i;
文本与命题组答案不符,故该处答案不予给分。
同时,由于更改了行数,后续程序文本均会受影响,从而影响正常得分。
②关于上文中所谓的“命题组答案”
仍以
int i,j,sum=0;
/**************found********************/
for(i=0; __1__ ;i++) //假设答案应为i<10或其他等价写法
sum+=i;
为例。
正确答案应该是i<10或其他等价写法,那么命题组会将各种“正常的”写法作为命题组答案编撰以供评分。依旧举例说明,等价写法包括:
i<=9
i<9+1
i<=10-1
后续有无数种写法就不一一例举了
明显只有i<10和<=9是正常写法,后续写法都过于奇葩,故此处在考试时只有写入i<10或<=9才会得到正常的分数,其他写法均不给分。
另外,这里无需担心,命题组很贴心的将各种常见写法都纳入到”命题组答案“中,只要不是过于特立独行的答案,均会在考试中得到本该有的分数。
总结:
填空题,在程序能够“运行出正确的答案”,并且没有违反①和②所强调的事项,均会得到本该有的分数。
①项通常不会违反,被此项影响得分的人数很少
②项不管是考试还是练习,在”能够运行处正确的答案“前提下依旧丢分的几乎全都是因为此项。
例如考试时,答案过于特立独行,将i=i+1;写成i=i+3-2;
而市面上绝大多数的等考模拟软件,鉴于各种原因,都没有使用”命题组答案“给出的姑且称为”正确答案库“的答案范围,而是每个位置只给出一种在该模拟软件中可以得分的答案写法,其他”考试时将会正常得分“的答案写法,造成考试时能够得分但是在使用这些模拟软件时均得不到分数的情况,也就是学生们经常询问的问题:
”老师,i=i+1;和i+=1;不是一样吗?为什么这道题写i=i+1;才给分,另一道题只有写i+=1;才给分?“
2、改错题:
答题方式和评分准则完全等同与填空题,不再重复叙述
3、程序编写,即俗称的编程题:
答题方式:
题目中有明确叙述,要求书写程序的某一部分,以实现题目要求的功能。通常要求书写的位置是某个指定函数的函数体,或者部分主函数的函数体,代码量6-10行左右。
评分准则:
编程题,评分依据是”能够运行出正确的结果“,即评分依据有两个关键点,一是运行,二是结果正确。
此题评分准则依旧是跟”命题组答案“对照,依旧是对比文本后逐行按比例给分,而命题组答案在此题中将会是唯一的。
编程题的评分依据,是程序编译运行后得到的一个所谓的”out文件“,该文件在考生文件夹下,由编程运行时产生,文件名中通常带有”out”字样,各题具体的文件名,查看编程题中调用fopen函数时所书写的文件名就可以确认。
例如某题面中存在如下语句:
fopen(fp,"out.dat",w);
那么该题目对应的评分依据就是对应考生文件夹下的名为“out.dat”的文件。
编程题的评分,是将out文件的内容与命题组答案对比,逐行按比例给分。
影响得分的项目如下:
①程序存在error,无法通过编译:
无法编译,就无法运行。没有运行,就不会产生out文件。没有out文件,那么将会得到“指定文件未找到”的错误,此题判0分。
另外还有一点要注意,有个别模拟软件曾经出现过,题目中指定文件名为"out.dat",但是题面程序代码中创建的却是"ps35.out",造成“指定文件未找到”判0分的情况。这属于模拟软件的bug,不会在考试中发生。
②程序通过编译且能够运行,但是代码本身存在bug。
举个例子,写程序找出1-15之间的素数。
命题组给出的out文件内容如下:
2
3
5
7
11
13
一共6行,因为编程题总分24分,所以每行占4分。
如果考生答题过程中程序书写没有错误的话,一定会得到跟命题组内容与格式完全一样的答案(文件的书写由题面的fprintf函数负责,不允许考生改动,故文件格式是已经被指定的),将会得到满分24分。
如果代码有误,程序判定过程中将7判定为非素数,得到的out文件内容与命题组答案对比及评分细则如下:
2 2 匹配,得4分
3 3 匹配,得4分
5 5 匹配,得4分
7 11 不匹配,得0分
11 13 不匹配,得0分
13 不匹配,得0分
故此题得分仅12分。
如果上述数值均正确判断,但是错误的将1判断为素数,out文件内容如下:
1
2
3
5
7
11
13
结果可想而知,逐行判定,最终肯定判0分。
额外要说明的是,大部分模拟软件,不会进行逐行按比例给分,而是一旦out文件内容与命题组答案”不完全匹配“,直接判0分,而考试时一定是逐行按比例给分的,这点无需担心。
③程序书写正确无bug,但是改动过程序命令禁止改动的其他部分,例如fprintf函数,请参考②
总结:由于②导致该题丢分的几率是最高的,一定要小心再小心。代码出现问题时,别心急。很多时候,将已经书写完毕的代码整体删掉,重新书写,是最省事省力的解决bug的方案。
最后,补充一点,万一程序原始结构被破坏,别着急,不要冒险关闭vc6,只要按下ctrl+z组合键,就能逐步恢复之前的样式。因为ctrl+z组合键的功能是”撤销“
6. 今天考的国二c语言,操作题都编译和运行了结果都对,再次打开也是改正过后的程序,但是忘记保存了,这样
编译必须保存才能进行。你已经运行出了正确的答案说明已经保存了。所以第二次打开看到的是正确的结果。
放心吧!已经保存了。
7. 在LINUX中可否把应用程序都编译到内核中,让系统启动后完全在内存中运行不读硬盘!
不行,
内核是内核,只提供最基本的服务。很多服务可以编译成模块装入内核,但是模块也不是无限多的。你编译过内核吗?内核文件不大,解压出来有200多M吧,如果全部功能编译的话,一般电脑没有几天可能下不来。
把程序编译到内核,不是不行,不过你的程序要修改。如果你能为linux内核提供代码的水平,估计离你说的就不远了。
你的想法有点...... 在你硬盘上读点东西就那么吝啬吗?
我Linux4G多的文件,分了6G数据空间,还有2G的交换文件,我都没心疼。
8. linux下多个独立项目的make,如何写个批处理让它们一次性都编译
没问题啊,应该是可以的,报什么错误呢?你是不是文件夹路径写错了?
9. dec,c++为什么每次运行都要编译
因为编译就是把一个个语句编写成可执行文件,所以每次运行都必须编译。
10. C++ 编译时会把标准库里所有的函数都编译吗
C++ 标准库的一部分实现(模板类、模板函数、内联函数)需要写在头文件中,如果包含这些头文件,就需要编译这些部分。另一部分的实现是预先编译在程序库里。
不过模板和非模板的类/函数在编译时是有差异的,在编译模板时是不会立即生成代码,当中调用一些非模板函数也不会完成所有决议,直至在模板实例化的时候,才会把用到的部分生成代码。关于这方面可以去了解一下 SFINAE(Substitution Failure Is Not An Error)。
为了减少编译时间,应该只包含需要的头文件。C++ 标准库提供了前置声明头文件,如 <iosfwd>(事实上现时只有这个)。这样可避免在程序的头文件中包含 iostream、fstream 这些颇大的头文件。