导航:首页 > 源码编译 > ubuntu编译fork

ubuntu编译fork

发布时间:2022-07-24 06:50:22

❶ ubuntu 编译uboot需要哪些工具,哎,新手,详细点哦,亲

1.首先安装基本编译环境:sudo apt-get install build-essential
2:先把交叉编译环境包放到你的共享目录,(我这里的版本是:arm-linux-gcc-4.4.3.tar.gz)
3:进行解压 tar zxvf arm-linux-gcc-4.4.3.tar.gz -C (要解压的路径)
比如:tar zxvf arm-linux-gcc-4.4.3.tar.gz -C ~/ (root 用户的工作目录)

4:然后设置环境变量:export PATH=$PATH:~/opt/FriendlyARM/toolschain/4.4.3/bin

5:要想系统启动自动加载环境变量:
1:普通用户:vim .bashrc 在最后添加你的环境变量:export PATH=$PATH:~/opt/FriendlyARM/toolschain/4.4.3/bin

2:root用户:vim .bashrc 在最后添加你的环境变量:export PATH=$PATH:~/opt/FriendlyARM/toolschain/4.4.3/bin

❷ ubuntu 下怎么编译运行.c文件

命令行编译运行,或者下载安装个c语言的ide。
命令行,编译。
gcc xxx.c
默认生成a.out,可以指定输出文件。
运行

./a.out
就可以了。
ide:codeblocks,eclipse,clion。

❸ ubuntu系统下怎么编译内核文件

一、下载源代码和编译软件的准备
安装有关编译程序。安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。安装不了,请检查/etc/apt/sources.list 文件。有关命令:代码:$sudo apt-get install build-essential kernel-package libncurses5-dev
二、解压源代码注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹,linux掌门人linus说解压到任何目录上都可以。当然,linus的说法是正确的。我放在自己的主目录下的src目录。如果你下载源代码是放到自己的主目录下或者运行上面的wget下载的,那么运行下列命令:代码:$ cd ~$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/现在,源代码就在 ~/src/linux-2.6.25.10进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。代码:$ cd ~/src/linux-2.6.25.10
三、开始编译前的准备工作。首先,清理以前编译时留下的临时文件。如果是刚刚解开的包,不需要执行这步。如果是第二次或者是第n次编译,那么一定要执行。相关命令如下:代码:$ sudo make mrproper网上很多教程上说把现在使用的内核的config拷贝过来参考,据实验,是不需要的,ubuntu还有debian会自动做这步。不过这条命令倒是可以学习一下。当然你可以将以前的配置拷贝过来。命令:代码:cp /boot/config-`uname -r` ./.config
四、开始配置内核选项。相关命令:代码:$sudo make menuconfig配置用到的键只有几个,esc退出菜单;空格改变选项状态;光标键上下左右移动,回车选定。选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。配置选项非常多,具体配置可以参考金步国先生翻译的资料:Linux 2.6.19.x 内核编译配置选项。 请大家遵循一个原则,如果你自己使用的内核已经选用了某个选项,如果你没用充分的理由,不要随便改动。这样虽然内核不那么精简,但是不容易出现问题。我们可以精简的部分是硬件模块部分,对于自己没有的硬件要毫不犹豫的清除。如果你很执着,或者你有洁癖,你也可以一项项对过去,按照金步国先生的资料描述去选择基本上没有问题。
五、必须强调的几个选项:1、
在“General setup”里面的“Prompt for development and/or incomplete
code/drivers”金步国认为是不需要。但是如果你的硬件比较新,那几乎是必须选的,这样,我们才可以找到4965无线网卡,alsa声音驱动等
等。Kernel log buffer size 我选15,双核。如果你用ia64,要选16。Control Group support 集群支持?可以不要Choose SLAB allocator (SLUB (Unqueued Allocator)) 内存管理模式slab和slub选择slub。
2、在“Block layer”里,假如没有2TB的硬盘,就去掉:Support for Large Block Devices 。Support for Large Single Files 也不需要,谁有2TB的文件?
3、Processor type and features中是关于cpu的,要认真选。Symmetric multi-processing support是打开多核的开关,我的cpu是双核的,选中。Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。找到自己的cpu后,把Generic x86 support选项取消。Subarchitecture Type 选(PC-compatible)Maximum number of CPUs 输入自己的核心数目,我输入2。SMT (Hyperthreading) scheler support说的是超线程技术,P4有支持的,我的t8100不支持,目前大部分市场上的家用cpu都不支持。High Memory Support (4GB) 1G以下选1G;我是3G,选4G;4G以上的选16G在“ Timer frequency ”里,默认是250Hz,较新的cpu都可以选择了1000Hz,性能更好。
4、Power management options中把APM (Advanced Power Management) BIOS support关闭。现在的电脑都用acpi了。CPU Frequency scaling 是笔记本cpu节电技术Default CPUFreq governor (conservative) cpu节电模式有四个,笔记本默认选conservative比较好。ACPI Processor P-States driver 必须选,不然CPU Frequency就不能用。后面的可选自己硬件相关的,我选的是Intel Enhanced SpeedStep和 Intel Speedstep on ICH-M chipsets,其他的统统消灭。
5、Bus options的选择:Bus options (PCI, PCMCIA, EISA, MCA, ISA)PCI support PCI Express support 现在新买的机器基本上都是PCI Express了ISA support 较新的新机器没有ISA设备,可以去掉MCA support 去掉NatSemi SCx200 support 去掉PCI Hotplug Support Support for PCI Hotplug (EXPERIMENTAL) 如果没有PCI热插拔设备,去掉这里的选项可以考虑全部编译进内核,而不是以模块形式存在。
6、Device Drivers是重点,由于linux不但面向个人工作站,更多的是面向服务器的应用,所以可以把自己机器上没有的硬件全部去掉,而不用面面俱到。但是通用型的选项要慎重。比如在网卡的部分,除了我的千兆网卡 Broadcom Tigon3 support和4965无线网卡Intel Wireless WiFi 4965AGN,其余的硬件支持统统去掉。再比如声卡部分,我的是hd声卡,我只是在PCI devices中,选intel hd 声卡,再选Build IDT/Sigmatel HD-audio codec support,除此之外的硬件支持全部去掉。
声卡还有一个细节,在ubuntu7.10里面, 需要在/etc/modprobe.d/alsa-base后面添加options
snd-hda-intel probe_mask=1
model=3stack,这样我的笔记本喇叭才可以发声,不然只有外接耳机或者音箱。这次编译以后,这个动作就不必了,但是两个耳机插口只有一个可以用
了。再比如我的电脑中没有agp,就可以直接把agp相关的选项全部取消。要注意的:ATA/ATAPI/MFM/RLL support Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盘上,那么这里一定要选*,选M都不行。否则启动时会出现“waiting for root file system”的提示而停滞不前。 SCSI emulation support 要用刻录机,必须选。SCSI device support 现在都是SATA硬盘,一定要选* SCSI disk support 如果你的/boot放在SATA硬盘上,一定要选*。
SCSI CDROM support 虽然康宝刻录机是ide接口的,但是必须把它当成scsi接口的,这是老问题了。用刻录机,必须选。
Graphics supportSupport for frame buffer devices 选中,进入选择 VESA VGA graphics support 选上,不然字符界面启动会有问题,后面的显卡选择:由于我的显卡是nvidia 8400gs,要自己安装nvidia公司的驱动,所以一个都没有选。这样导致ubuntu开机动画会出问题,我索性在grub中的splash字符全部删除,把开机动画关闭。字符界面很正常。 Console display driver support 有人开机后字符控制台错误,就是这部分选项没有选,出问题了。 Framebuffer Console support 需要打开。
Bootup logo 开机图标,会在自检的画面上加上个性图标。需要在grub上添加“vga=”的选项 简称fuse。是必选的,如果你要用windows分区。
CD-ROM/DVD Filesystems ISO 9660 CDROM file system support 一般选*DOS/FAT/NT Filesystems VFAT (Windows-95) fs support 有FAT32分区就选*吧 NTFS file system support 有NTFS分区就选*吧 NTFS write support 如果想对 NTFS分区进行写操作,选*必须将启动盘的文件系统编译进内核,默认是编译成模块,这样无法启动系统。ubuntu采用的文件系统是ext3,请把ext2,ext3相关的必要选项都编译进入内核。
8、Virtualization这个大类是我多花几百元买t8100的主要原因,因为t8100支持intel vt技术使linux上的虚拟机的性能大幅度提高。这里的选项我除了amd的,其他都编译成模块。
9、全部设置完成,最后一项是保存设置。按照我的习惯,先在上一层目录保存一个备份,文件名类似 ../config20080630然后再保存到当起目录,文件名 .config退出设置程序。
六、开始编译内核。ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。相关命令:代码:$sudo make-kpkg clean 这条命令好像不要超级权限,很多资料上说要,不过这不是原则问题。
$ sudo make-kpkg -initrd --initrd --append-to-version=dell1400 kernel_image kernel-headers上述命令中的dell1400可以用自己喜欢的字符代替,最后的字符一定是数字.输完上述命令回车之前,建议大家把浏览器还有别的运用程序都关掉,机器开始的工作比较艰苦。
我的机器大概十几分钟。
七、安装内核编译完成就是安装工作。编译好的内核在上一层目录。包括linux-headers-...-_i386.deb和linux-image-...-i386.deb两个文件,如果你不搞开发的话,只要安装内核就可以,头文件以后要用的时候再说。安装相关命令:
代码:$ cd ..$ sudo dpkg -i linux-image-(按tab键)文件名很长,如果不用tab自动补足是不可能的,tab键万岁。安装完成后和老内核比较一下大小代码:
$ ls -l /boot/
八、重新启动验证新内核。代码:$ sudo reboot
九、显卡驱动如果你的显卡和我一样是nvidia显卡,启动之后往往无法正常进入x-window。即使能看到gdm登录界面,效果也是很差的。那么就要安装nvidia驱动。用ctrl+alt+f1 进入字符命令行,输入用户名,密码登录。 #ps ax看看和gdm相关的进程,把这些进程全部关闭;用sudo /etc/init.d/gdm stop有可能有一个进程没有关闭:#kill 进程号然后安装nvidia显卡驱动,当然驱动要先下好,到nvidia驱动所在的目录里,运行:# sh ./NVIDIA-Linux-x86-173.14.12-pkg1.run重新启动以后就ok。要用nvidia的驱动,每次升级内核都要这么做。
十、无线网卡相关的内核选项是Networking --->Wireless --->Generic IEEE 802.11 Networking Stack (mac80211)还有4965的驱动。4965
无线网卡驱动虽然已经编入内核,但没有firmware无法使用。需要把原来内核的firmware拷贝到新内核对应的目录,名字和内核一致,我的内核是
linux-image-2.6.25.10dell1400,那建的目录名就是2.6.25.10dell1400。代码:具体命令:$ cd /lib/firmware/$ sudo mkdir 2.6.25.10dell1400把你的老内核中的4965的firmware拷贝过来。$ sudo cp 2.6.24-16-generic/* 2.6.25.10dell1400/上面的命令和下面的命令是等价的:$ cd /lib/firmware/$ sudo cp -R 2.6.24-16-generic/ 2.6.25.10dell1400/
重新启动系统,无线网卡就正常了。
附编译使用的机器配置:dell vostro 1400,t8100,nvidia 8400cs显卡,内置SigmaTel STAC9228芯片的声卡,4965无线网卡,BCM5906M千兆网卡,3G内存,160G硬盘,combo刻录。
编译系统版本:ubuntu 8.04桌面版.

❹ 关于fork()

原因:sleep(1000)时间过长 , 在子进程没运行完时父进程已经运行完,你可以把1000改成1测试下 会打印三次,但是由于父进程已经运行完,会回到shell下继续输出,其实你sleep(1000) 也能打印三次,不过要等 1000s,你可以用ps 命令查看进程 “./a.out” 的进程一定还在, 用 kill -9 + 进程id 可杀死该进程;
如果非要在子进程打印三次每次1000s 可以让父进程等待子进程结束后再结束;
另外:fork一个子进程时,父子进程不一定先运行哪一个,但是在ubuntu系统下大多数时候会先运行父进程,记住不是确定先运行!

❺ ubuntu下怎么编译linux内核

Ubuntu 系统
1. 准备工作
切换为管理员权限,sudo –i 输入用户密码 进入root 权限
apt-get install build-essential kernel-package libncurses5-dev libqt3-headers
build-essential (基本的编程库(gcc, make 等)
kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具)
libncurses5-dev (meke menuconfig 要调用的)
libqt3-headers (make xconfig 要调用的)
2. 下载特定版本的内核源代码
3. 复制源码linux-3.2.12.tar.bz2 到/usr/src 目录,解压缩
命令.假设源码存放在/home 目录下
cp /home/linux-3.2.12.tar.bz2 /usr/src
cd /usr/src
tar xvjf linux-3.2.12.tar.bz2
解压后生成 linux-3.2.12 目录
4. cd linux-3.2.12
接下来配置内核选项
make menuconfig 这一步比较复杂,内核选项很多,可以使用当前内核的配置选项,
但编译内核的时间会比较长,因为装系统的时候使用的配置是适应大多数系统的,非定
制选项。关于内核配置选项怎么定制,网上很多。
5. 把正在使用系统中的内核配置文件/usr/src/linux-headers-2.6.38-13-generic/.config 拷到
/usr/src/linux-3.2.12 目录下
cp /usr/src/ linux-headers-2.6.38-13-generic/.config /usr/src/ linux-3.2.12
执行:
cd /usr/src/ linux-3.2.12
make menuconfig
终端会弹出一个配置界面
注意主菜单最后有两项:
load a kernel configuration…
save a kernel configuration…
先选第一项load ….,意思是,利用当前的内核配置详单来设置将要编译的内核,然后选save 这一项保存,最后退出配置界面
6. 开如编译安装新内核
执行:make mrproper (清除以前曾经编译过的旧文件,如果是第一次编译,可不执行)
执行:make (编译,加-j4,必须加,双核并行编译,速度快很多,不过使用原先配置
选项)
然后:make install
再:make moles (编译模块)
再:make moles_install (安装模块)
最后创建initrd 文件:
mkinitramfs -o /boot/initrd.img-linux-3.2.12
7. make install 以后,系统自动更新了启动项,可以cat /boot/grub/grub.cfg 看下.之前的启动项不能删除,如果编译内核不成功,之前的启动项又不见了,系统也就跪了
8. reboot

❻ 在ubuntu系统如何进行C++程序编译或其他程序编译。求详细说明指导,不胜感激

用g++来编译,g++和gcc都是差不多的,例如编译一个简单的hello.cpp,g++ hello.cpp -o hello就行了,-o是指定生成的可执行文件,不加默认是a.out,如果程序包含多个源程序和头文件的话,你可以一步一步的编译,但最好是写个makefile然后直接make就好了

❼ ubuntu fork()父进程不执行

为什么两次都是执行的子进程,父进程不执行?
首先你这个代码是没有问题的,既执行了子进程,也执行了父进程,我用gcc帮你编译运行了一下:
i am the father process:4300
i am the child process:4301
很显然,两个进程都运行了。
我怀疑,你没有明白fork函数的使用,运行一次fork函数,成功的话,有两次返回值。返回值为0,表示
子进程,返回值大于0,表示父进程返回。
另外,你的代码,应该是coby过来的,或者你还不了解你的代码,因为很多的头文件,都没有必要添加
例如:#include<sys/wait.h> #include<math.h>,同时,你也掉了
#include<string.h>
这个头文件

❽ Ubuntu虚拟机里怎么编译内核

方法/步骤
”Ctrl+Alt+T”进入终端,使用命令 sudo passwd root 启动root账号,重启,使用 su 命令获得root权限;

安装编译内核所需软件包
# apt-get update
# apt-get install build-essential kernel-package libncurses5-dev fakeroot 选择Y
下载3.19.3源码包并解压
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.19.3.tar.xz
# tar -Jxvf linux-3.19.3.tar.xz
配置内核
# cd linux-3.19.3 (cd命令进入源码目录)
# make mrproper (得到源代码后,将其净化)
# make menuconfig (对内核选项进行配置,不需要配置,直接enter)
# cp /boot/config-'uname -r'-generic ./.config ('uname -r'-generic指现版本内核)
# make clean (删除配置时留下的一些不用的文件)
编译内核(需要很长时间,我用了有两小时,请耐心等待)
# make bzImage
# make moles (编译模块)
安装新内核
# make moles_install (安装模块)
# make install
制作启动盘
# sudo mkinitramfs 3.19.3 -o /boot/initrd.img-3.19.3
更新grub2
# sudo update-grub2

重启,使用新内核(不是注销哦,是重启)
使用命令# uname -r 查看内核版本

❾ 在ubuntu中用fork创键了4个进程用pstree可以看到进程吗

是有点怪,我在7.2下都能看到。但是9.0下不一定了,我有个程序,有两个线程,在9.0下运行的,从来只能看到一个进程,照例来说,在7.2下面应该能看到3个线程在运行的。对了你还可以在fork后,加个printf语句来判断你的子进程有没有执行。ps-aux不一定能看到所有进程,看到的不一定很top出来的一样,可pstree不加printf也可以看到10个fork出来的进程,pstree-p可以看具体进程号。一目了然

❿ ubuntu内核 fork在哪个目录

fork 实际上是操作系统提供的系统调用 (syscall),它是由操作系统,比如你在linux系统上,就要看内核源码。 至于程序中我们使用的 fork 接口本身,是由标准C库,libc 实现的,它其实很简单,直接调用了操作系统提供的系统调用。如果你是想看这个...

阅读全文

与ubuntu编译fork相关的资料

热点内容
考研结合特征值计算法 浏览:514
操作系统算法综合题 浏览:150
华为程序员待遇 浏览:545
程序员带娃的图片 浏览:77
迷你云服务器怎么下载 浏览:813
福州溯源码即食燕窝 浏览:232
当乐服务器怎么样 浏览:713
nc编程软件下载 浏览:382
如何限制手机app的使用 浏览:307
安卓华为手机怎么恢复桌面图标 浏览:956
我的世界电脑版服务器地址在哪找 浏览:533
违抗了命令 浏览:256
安卓如何实现拖拽放置 浏览:91
净资产收益率选股指标源码 浏览:599
血压力传感器计算公式单片机 浏览:466
全网接口vip影视解析源码 浏览:916
如何破解服务器远程密码错误 浏览:377
平安深圳app如何实名认证 浏览:500
linux网络监控软件 浏览:889
内网服务器如何上传文件 浏览:140