㈠ 我应该买什么PC来获取Quartus II的最快速编译时间
最后修改: 2012 年9 月05 日
产品类别: 设计软件
产品领域: 安装/授权(设计软件)
产品子领域: 操作系统支持/系统要求
标题说明Altera为Quartus03 II 只推荐最低硬件要求,最低可用物理RAM,和交换空间。这些推荐是在载有Quartus II的readme.txt格式中和在器件支持版本注释中,存在于Quartus II Development Software documentation page最低要求使Quartus II 能够运行。如果您具有大的设计和想要最佳编译时间,Altera建议更高的配置。 Quartus II需要大量的处理器和存储器资源。CPU速度是影响编译次数性能的主要因素。请考虑多核处理器和多CPU的配置,从而利用多线程编译。使用分化快设计和增量式编译来完全利用可用内核。请参考 Quartus II手册的第二卷的Recing Compilation Time章节。除此之外,解决以下三个瓶颈:通过处理器最大化芯片上的缓存访问最小化虚拟储存器的使用最小化硬盘访问时间通过处理器最大化芯片上的缓存访问选择具有大量的芯片上缓存的CPU。最小化虚拟储存的使用使用64-位体系结构和操作系统,伴随足够量的快速速度等级RAM。随着器件大小和软件复杂性的增长,内存使用也在增加。针对较新的器件系列(Stratix03 III 和更新的版本)的设计比用于32位应用的RAM的2GB需要更多,所以使用64位操作系统和软件。对于一个64位系统,对于更大的器件系列,一个单编译应该已经访问至少RAM的8GB (安装8到10GB)和更多。对于每种器件的最低安装的RAM信息,请参考器件支持版本注释,存在于Quartus II Development Software documentation page。最短的硬盘访问时间使用快速或固态硬盘安装一个本地SCSI或基于SATA的体系结构。磁盘也可以被RAID条带化,以便更快的访问。 使用网络磁盘可以是编译时间的一个显着地瓶颈。如果您必须在网络硬盘上存储工程源,Altera建议使用网络文件系统的源文件创建一个本地工程,保持项目目录当地和源文件远程。Quartus II 只读取几次源文件,但是需要访问Quartus II数据库(db and incremental_db)很多次。补充注释从32位转换到64位 OS并且软件可能不会减少编译时间。64位Quartus II使能够访问每进程较大的储存映射(没有2GB限制),但是使用64位OS或软件时可能看不到提高,如果我们的设计没有达到2GB限制并且在32位OS上使用低虚拟储存。您可能看到编译次数的稍微降低,由于64位进程的较多开销。Quartus II 10.0的编译次数性能和更新的64位对比32位(64位机上)是可比较的,如同Windows OS的性能对比相等的linux (32位对比32位,或者64位对比64位)。
㈡ 整体编译android系统,大家用了多少时间
我自己实际编译ICS4.0.4源码情况:acer台式机,3.2Ghz cpu,4核,8GB/1600hz内存,整体编译(含u-boot、kernel、boot.img和system.img)需要1小时10分钟。编译时,使用make -j8(因为硬件cpu是4线程的,故使用2倍线程数)。之后的增量编译,一般需要5~10分钟即可。
㈢ 编译程序所需要的时间和电脑的性能有关系么
有关系的
当需要编译工程的复杂度一定的时候,电脑性能越好,编译所需要时间越短;反之,则时间越长。
当电脑性能一定的时候,工程越复杂,则编译所需要的时间越长;反之,则时间越短。
㈣ 一般开发一个模块需要多长时间,测试需要多长时间
时间不等。
如果模块比较复杂,会导致测试时间长,或者保证模块长时间使用不会出问题,等等因素,一般都会在一个月甚至更长时间。
㈤ C语言多充循环,运算次数多,编译时间很长,又无法估计最终需要多久,怎么办
如果要减少时间 那么优化代码,或者直接改进算法
如果要预测时间,那么大致估计一下循环的次数,然后在固定的某个循环中加一个打印,通过打印频率来估算总时间
㈥ 什么叫底层代码
底层代码是指被封装好的代码,底层代码写的就是比较原始,比较基础的代码。底层代码编写是非常接近机器的编程,使用底层开发语言(如C或汇编)。这与使用高级语言(例如Python,java)的程序员进行编程不同。
对于java来说,底层代码一般是指框架的实现代码,这些代码一般都是一些常用代码或比较接近于原始的代码,这些代码封装好,可以方便复用和调用。而对一些操作系统来说,底层代码可能就是c或者汇编,写底层代码就是做底层开发。比如java的Map类,底层代码实现:
(6)模块最短编译时间扩展阅读
编写底层代码一般要比较深厚的功底,对程序设计,代码涉及的各个方面,性能,耦合度,复用性都要很深的掌握和考虑,熟练掌握设计模式,良好的编程习惯,代码优雅,数据结构,精通各种算法。
很多java框架被淘汰,除了本身有致命的bug外,还有就是有性能更好,使用更方便的框架出现,而这些都是靠底层代码实现来决定的。
㈦ ubuntu内核编译需要多长时间
在分析linux内核源码的过程中,要是能够修改内核源码并运行修改后的内核,我想肯定是令人高兴的事,哪怕第一次修改仅仅是在启动时打印一行"Hello, Wang Jiankun!",肯定也是令我高兴的。为了能成功编译修改后的内核,今天先编译一遍内核。
为了有一个完整的记录,今天的起点是一台裸机。
1、在裸机上安装一个最小的debian系统
为了能够尽可能清晰的显示编译一个内核所需要的组件,在安装系统时,仅仅安装最小系统,然后需要什么,就使用apt-get安装什么。
使用网络安装,在安装过程中出现Software selection界面时不要选择任何选项,这样安装的系统将是最小的系统。
为了使用ssh远程登录,最小系统安装完成后,要安装ssh服务器并且要设置静态ip地址(debian安装过程中是通过dhcp获取的ip地址)。
2、安装ssh服务器
apt-get install ssh
3、设置静态ip地址
修改文件/etc/network/interfaces,其中蓝色部分是增加的,红色部分是屏蔽掉的,黑色部分是没有变化的。
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
# Wang Jiankun commented the following line
#iface eth0 inet dhcp
# Wang Jiankun added the the following lines
iface eth0 inet static
address 192.168.1.251
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
gateway 192.168.1.1
重启系统后,修改将生效。
4、通过wget下载linux内核源码
administrator@wangjk:~/kernel$ wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2
5、解压文件linux-2.6.19.tar.bz2
administrator@wangjk:~/kernel$ tar jxf linux-2.6.19.tar.bz2
tar: bzip2: Cannot exec: No such file or directory
tar: Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error exit delayed from previous errors
administrator@wangjk:~/kernel$
看来是没有bzip2这个包,那就安装一个:
apt-get install bzip2
6、安装debian的kernel-package软件包
在安装kernel-package软件包时,最好使用命令:apt-get build-dep kernel-package,而不要使用命令:
apt-get install kernel-package,后者安装的软件包是前者的子集,使用后者安装kernel-package软件包后,执行make menuconfig命令会出现头文件找不到的错误,如下所示:
administrator@wangjk:~/kernel/linux-2.6.19$ make menuconfig
HOSTCC scripts/basic/fixdep
scripts/basic/fixdep.c:105:23: error: sys/types.h: No such file or directory
scripts/basic/fixdep.c:106:22: error: sys/stat.h: No such file or directory
scripts/basic/fixdep.c:107:22: error: sys/mman.h: No such file or directory
scripts/basic/fixdep.c:108:20: error: unistd.h: No such file or directory
scripts/basic/fixdep.c:109:19: error: fcntl.h: No such file or directory
scripts/basic/fixdep.c:110:20: error: string.h: No such file or directory
scripts/basic/fixdep.c:111:20: error: stdlib.h: No such file or directory
scripts/basic/fixdep.c:112:19: error: stdio.h: No such file or directory
主要是因为libc6-dev软件包没有安装。所以即使使用了apt-get install kernel-package还得使用apt-get build-dep kernel-package,不如一次使用apt-get build-dep kernel-package完成方便。
7、安装libncurses5-dev软件包来支持make menuconfig
通过apt-get build-dep kernel-package安装完成kernel-package后,执行make menuconfig仍然报错,如下所示:
administrator@wangjk:~/kernel/linux-2.6.19$ make menuconfig
HOSTCC scripts/kconfig/lxdialog/checklist.o
In file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:32:20: error: curses.h: No such file or directory
In file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:97: error: expected specifier-qualifier-list before 'chtype'
scripts/kconfig/lxdialog/dialog.h:187: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:193: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:195: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:196: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:197: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:198: error: expected ')' before '*' token
scripts/kconfig/lxdialog/dialog.h:200: error: expected ')' before '*' token
scripts/kconfig/lxdialog/checklist.c:31: error: expected ')' before '*' token
scripts/kconfig/lxdialog/checklist.c:59: error: expected ')' before '*' token
scripts/kconfig/lxdialog/checklist.c:95: error: expected ')' before '*' token
[省略其后部分]
原来是最小系统不支持图形的原因,安装libncurses5-dev后即可。
8、将系统的config文件拷贝到内核目录下
cp /boot/config-2.6.18-6-686 ./.config
9、执行make menuconfig
虽然是将原来系统的config文件拷贝过来的,但是如果所以的配置都采用默认的配置仍然会有问题,在我的系统上在加载文件系统时会死掉,所以还是要做必要的配置,主要是将scsi和sata部分编译进内核而不要编译成模块,如下所示:
Device Drivers --->
Serial ATA (prod) and Parallel ATA (experimental) drivers --->
SCSI device support --->
将蓝色两部分级联的选项全部编译进内核(其实没有必要全部,但为了简单起见,暂时这样做)。
10、安装fakeroot软件包
11、编译内核
fakeroot make-kpkg --initrd --revision=custom.1.0 kernel_image
12、安装内核
wangjk:/home/administrator/kernel# dpkg -i linux-image-2.6.19_custom.1.0_i386.deb
Selecting previously deselected package linux-image-2.6.19.
(Reading database ... 17679 files and directories currently installed.)
Unpacking linux-image-2.6.19 (from linux-image-2.6.19_custom.1.0_i386.deb) ...
Done.
Setting up linux-image-2.6.19 (custom.1.0) ...
Running depmod.
Finding valid ramdisk creators.
Using mkinitramfs-kpkg to build the ramdisk.
Running postinst hook script /sbin/update-grub.
You shouldn't call /sbin/update-grub. Please call /usr/sbin/update-grub instead!
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.19
Found kernel: /boot/vmlinuz-2.6.18-6-686
Updating /boot/grub/menu.lst ... done
13、重启系统引导新内核后查看版本号
administrator@wangjk:~$ cat /proc/version
Linux version 2.6.19 (root@wangjk) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Thu May 7 21:52:10 CST 2009
administrator@wangjk:~$
可以看出已经是我编译的内核了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jiankun_wang/archive/2009/05/04/4147806.aspx
------------------------------------
ubuntu不带linux内核源码,需要自己下载安装。
1,查看自己的内核版本
uname -r
2,查看源内的内核源码类表
apt-cache search linux-source
3,下载安装内核源代码
sudo apt-get install linux-source-2.6.27 //我选的是这一个,自己看着办吧
4,等待........
下载完成后,在/usr/src下会有一个文件名为linux-source-2.6.xx.tar.bz2的压缩包
5,解压缩包
tar jxvf linux-source-2.6.27.tar.bz2 //看清自己的版本
解压后会生成一个源代码目录/usr/src/linux-source-2.6.27
6,进入源码目录后,配置文件
make oldconfig
7,生成内核
make
8,疯狂等待,大约1个多小时
9,编译模块
make moles
10,安装模块
make moles_install
大功告成!^_^
下面说一下Makefile文件
$(MAKE) -C $(KERNELDIR) M=$(PWD) moles_install #PWD当前工作目录的变量
obj-m := hello.o
#hello.o是你要生成的驱动,以后可以自己改
KERNELDIR:=/lib/moles/2.6.27-7-generic/build
#这里别抄,写成你自己的版本,这个目录执行了内核源码目录
PWD:=$(shell pwd) #将当前工作目录赋值该PWD
moles:
$(MAKE) -C $(KERNELDIR) M=$(PWD) moles
moles_install:
下面是一个经典的Hello,world!例子自己make一下就行了。
#include <linux/init.h>
#include <linux/mole.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world!\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye, cruel world!\n");
}
mole_init(hello_init);
mole_exit(hello_exit);
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/unikingest/archive/2009/03/10/3977747.aspx
-----------------------------------------------------------------------------
修改的这篇文章,自己加了几个注意点
http://blog.theosoft.net/article.asp?id=57
第一次的Linux kernel上机内容是编译一个内核。我用的是Ubuntu,有很多地方和其它 Linux不一样,所以就来把我的过程写下来,以后也好有个参照
首先当然是下载内核源代码,如果你要最新的内核,可以去ftp.kernel.org。当然,国内速度可能会很慢。如果你是教育网用户,可以去上海交大的镜像站下载,地址是http://ftp.sjtu.e.cn/sites/ftp.kernel.org/,缺点就是没有最新的内核(更新需要一定的时间)。
==================================================备注
如果是就是编译ubuntu本省自带的内核,只需要
新立得搜索linux souce,下载带ubuntupatch的kernel的source code。
sudo apt-get source linux-source-2.6.27
==================================================备注
我下载的是linux-2.6.19.2.tar.gz可以下到的最新版本了。下完之后当然是解压缩。不过还不能直接编译,因为Ubuntu的默认安装里缺少必要的组建。打开终端,输入一下命令:
sudo -i
apt-get install build-essential kernel-package libncurses5-dev
然后到新立得里把所有以ncurses开头的软件包全部装上,这样就可以开始编译内核了。
先运行以下命令,复制当前内核的配置文件。
cp /boot/config-`uname -r` ./.config
然后
make menuconfig
选择 "Load an Alternate Configuration File",再选择你刚才拷贝过来的.config文件作为配置文件。然后确定。当结束后,你选择退出时,会提示问你 "Do you wish to save your new kernel configuration?"选择yes即可。
接下来就要编译了。输入命令:
make
你也可以将编译任务分成2个线程来执行,只要输入:
make -j2
编译一般需要1~1.5小时左右,就看cpu的性能如何
编译完成后,开始安装:
make mole_install
make install
然后添加引导信息,不过之前还是要装一个组件initramfs-tools,装完以后输入:
mkinitramfs -o /boot/initrd.img-2.X.XX /lib/moles/2.X.XX
==================================================备注
后面的参数不要忘记了,否则启动新内核会出现错误:
WARNING: Couldn’t open directory /lib/moles/2.6.15.7-ubuntu1: No such file or directory
FATAL: Could not open /lib/moles/2.6.15.7-ubuntu1/moles.dep.temp for writing: No such file or directory
==================================================备注
最后打开 /boot/grub/menu.lst
在 ## ## End Default Options ## 下面添加类似下面的两段
title Ubuntu, kernel 2.6.19.2
root (hd0,4)
kernel /vmlinuz-2.6.19.2 root=/dev/hdd6
initrd /initrd.img-2.6.19.2
savedefault
boot
title Ubuntu, kernel 2.6.19.2 (recovery mode)
root (hd0,4)
kernel /vmlinuz-2.6.19.2 root=/dev/hdd6 ro single
initrd /initrd.img-2.6.19.2
boot
注意 root和kernel字段要模仿menu.lst下面已有的内容写。下面是 (hd0,4),那么你也写(hd0,4),下面写root=/dev/hdd6,你也写root=/dev/hdd6,只是内核的版本号改为现在编译的版本号。然后重新启动计算机,在GRUB中选择新内核启动。如果启动失败,你可以重启选择老内核。
㈧ kernel编译时间是什么意思
内核的编译系统主要由kconfig,makefile和一系列脚本共同构成。其中kconfig主要用于配置内核的各项功能,它的结果决定了各个部分最终是被编译成模块,编译进内核还是不编译。在内核顶层makefile的help可以看到有一个专门用于配置内核的命令序列,后续我们会详细介绍该部分内容。
顶层makefile是整个内核编译系统的入口,所有make相关的命令都由它发起,并调用定义在其中或定义在其它文件中的相应命令序列完成。它还定义了很多全局的参数,环境变量,目标和依赖等。
除了顶层makefile之外,还有几个定义在scripts目录中的重要文件,它们包括kbuild.include,makefile.lib和makefile.build。其中kbuild.include中主要定义了一些通用的变量和命令,如filechk,try-run,build,arg-check,if_changed等。makefile.lib中主要定义了编译相关的flag和命令,如c_flags,a_flags,cmd_ld,cmd_obj,cmd_uimage等。makefile.build文件是大部分目标最终调用的makefile,它会实际完成对目录的递归调用和对源文件的编译工作。
由于顶层makefile文件比较长,若从头阅读很容易陷入某些细节而打断思路的连贯性。因此,我们通过对内核目标编译的执行流程进行分析,看看linux到底是如何编译出来的。让我们先了解下内核makefile支持哪些功能,在linux根目录下执行make help,会输出以下内容(由于打印较长,这里采用分屏显示):
图1.1
图片1.2
图片1.3
它支持的目标大致包含以下几部分:
(1)清理相关的目标
(2)配置相关的目标
(3)通用目标
(4)静态分析目标
(5)kernel自测目标
(6)kernel打包相关的目标
(7)文本相关的目标
(8)架构相关的目标
(9)一些通用的选项
显然,我们最关心的是linux内核的生成过程,故我们采用以下顺序来组织本文,在涉及到架构相关的内容时,本文都以arm的aarch64为例。
2.配置相关目标
make menuconfig的执行过程分析
3.通用目标
(1)make vmlinux的执行过程分析
(2)make moles的执行过程分析
(3)其它通用目标的执行过程
4.清理目标的执行过程分析
5.通用命令行选项的用法介绍
(1)V选项介绍
(2)O选项介绍
(3)C选项介绍
6.makefile.build文件的分析
京东爆款好物每满300减40,千万别错过~
京东
广告
Kernel 编译、安装内核详细过程
5下载·0评论
2011年6月29日
kernel编译过程
1976阅读·0评论·0点赞
2019年6月9日
什么是编译
7995阅读·0评论·1点赞
2020年8月13日
Linux Kernel编译
2034阅读·0评论·1点赞
2018年8月9日
android 内核编译时间戳,Android 启动性能优化 - kernel篇
223阅读·0评论·1点赞
2021年6月3日
Android 系统编译之内核编译
3.1W阅读·27评论·18点赞
2018年9月12日
还在等什么?京东爆款商品每满300减40,立即抢购!
京东
广告
kernel编译步骤解析
2871阅读·0评论·0点赞
2022年4月14日
Linux Kernel 编译流程 (一)
1265阅读·0评论·0点赞
2021年1月18日
[内核源码编译]编译内核-kernel编译问题集锦
343阅读·1评论·1点赞
2022年8月27日
【ESWIN实习】一、熟悉kernel编译流程
579阅读·0评论·0点赞
2021年2月24日
编译kernel
824阅读·0评论·0点赞
2015年7月21日
Android每次编译kernel时间都会改变(不让它改变)
2154阅读·0评论·1点赞
2017年10月13日
"Kernel version" 中编译时间的前世今生
1598阅读·0评论·3点赞
2016年4月15日
[kernel]linux内核基础: 版本、源码、编译与调试
9419阅读·0评论·1点赞
2022年3月28日
kernel编译
476阅读·1评论·1点赞
2019年10月20日
linux 模块编译过程,首次编译Kernel模块的经历
656阅读·0评论·0点赞
2021年5月11日
系统移植-(三)kernel内核源码的配置和编译过程
919阅读·1评论·2点赞
2020年4月13日
树莓派4B内核驱动开发(二)本地编译内核
321阅读·0评论·0点赞
2021年2月24日
编译生成的kernel说明
1558阅读·0评论·0点赞
2010年1月20日
Kernel 编译配置机制
5883阅读·1评论·1点赞
2014年5月7日
去首页
看看更多热门内容
㈨ 什么是编译时间
用户使用编译程序对其个人编制的源程序进行编译的过程称为程序编译。编译时间(compiling time) 指编译程序将源程序编译成目标程序所占用的时间。
1 如何减少编译时间
一是执行每日自动构建。每日自动构建的原理很简单:安装每日构建工具CCNET(不熟悉该工具的同学可以去搜索下)。然后在源码服务器上安装编译环境。源码服务器每天获取最新代码,每天下班后开始编译最新代码,经过一个晚上基本上就能把库和应用程序都编好,到了第二天开发人员只需下载最新的库文件和代码文件而不须自己重新编译。这样就能大大节省时间了。
二是使用联合编译器IncrediBuild。这个工具估计大家都不陌生。最近试验了一个新想法,写一个批处理文件,将SVN和IncrediBuild绑在一起,实现了从源码更新到工程编译。
2 批处理文件的命令语法
svnupinclude//更新服务器的include文件夹到本地
BuildConsoleD:\Code\MySolution.sln/prj="MyApp"/build/OpenMonitor/cfg="Debug|Win32"
BuildConsole是IncrediBuild的命令行工具,
D:\Code\MySolution.sln是你的解决方案文件绝对路径,
/prj参数设置你要编译的工程,如果你要编译多个工程,可以这样设置,/prj="prj1,prj2,prj3",
/prj参数也支持通配符,/prj="*"即为编译MySolution.sln下的所有工程
/build为编译工程,若改为/rebuild即是清理重编工程。
/OpenMonitor为打开IncrediBuild的图形化界面,去掉该参数则不出现图形界面。
/cfg为编译设置选项,如要编release版本,可以改为Release|Win32。
把上面的代码保存为BuildDebug.bat,把文件保存在D:\Code\路径下(即源码根目录,下面有include、src和vs三个文件夹),然后运行这个批处理文件就相当于把从更新源码到编译源码这一系列动作都执行了。