编译linux?linux用什么软件写程序

今天给各位分享编译linux的知识,其中也会对linux用什么软件写程序进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

如何编译linux源代码

首先uname-r看一下你当前的linux内核版本

1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname-r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。

2、配置内核 make menuconfig,根据你的需要来进行选择,设置完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。

3、编译,依次执行make、make bzImage、make modules、make modules

4、安装,make install

5、.创建系统启动映像,到/boot目录下,执行 mkinitramfs-o initrd.img-2.6.36 2.6.36

6、修改启动项,因为你在启动的时候会出现多个内核供你选择,此事要选择你刚编译的那个版本,如果你的电脑没有等待时间,就会进入默认的,默认的那个取决于/boot/grub/grub.cfg文件的设置,找到if ["${linux_gfx_mode}"!="text" ]这行,他的第一个就是你默认启动的那个内核,如果你刚编译的内核是在下面,就把代表这个内核的几行代码移到第一位如:

menuentry'Ubuntu, with Linux 3.2.0-35-generic'--class ubuntu--class gnu-linux--class gnu--class os{

recordfail

gfxmode$linux_gfx_mode

insmod gzio

insmod part_msdos

insmod ext2

set root='(hd0,msdos1)'

search--no-floppy--fs-uuid--set=root 9961c170-2566-41ac-8155-18f231c1bea5

linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash$vt_handoff

initrd/boot/initrd.img-3.2.0-35-generic

}

当然你也可以修改 set default="0"来决定用哪个,看看你的内核在第几位,default就填几,不过我用过这种方法,貌似不好用。

重启过后你编译的内核源码就成功地运行了,如果出现问题,比如鼠标不能用,usb不识别等问题就好好查查你的make menuconfig这一步,改好后就万事ok了。

最后再用uname-r看看你的linux内核版本。是不是你刚下的那个呢!有没有成就感?

如何编译linux版本

编译linux内核步骤:

1、安装内核

如果内核已经安装(/usr/src/目录有linux子目录),跳过。如果没有安装,在光驱中放入linux安装光盘,找到kernel-source-2.xx.xx.rpm文件(xx代表数字,表示内核的版本号),比如RedHat linux的RPMS目录是/RedHat/RPMS/目录,然后使用命令rpm-ivh kernel-source-2.xx.xx.rpm安装内核。如果没有安装盘,可以去各linux厂家站点或者www.kernel.org下载。

2、清除从前编译内核时残留的.o文件和不必要的关联

cd/usr/src/linux

make mrproper

3、配置内核,修改相关参数,请参考其他资料

在图形界面下,make xconfig;字符界面下,make menuconfig。在内核配置菜单中正确设置个内核选项,保存退出

4、正确设置关联文件

make dep

5、编译内核

对于大内核(比如需要SCSI支持),make bzImage

对于小内核,make zImage

6、编译模块

make modules

7、安装模块

make modules_install

8、使用新内核

把/usr/src/linux/arch/i386/boot/目录内新生成的内核文件bzImage/zImage拷贝到/boot目录,然后修改/etc/lilo.conf文件,加一个启动选项,使用新内核bzImage/zImage启动。格式如下:

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

linear

default=linux-new###告诉lilo缺省使用新内核启动linux###

append="mem=256M"

image=/boot/vmlinuz-2.2.14-5.0

label=linux

read-only

root=/dev/hda5

image=/boot/bzImage(zImage)

label=linux-new

read-only

root=/dev/hda5

保留旧有的启动选项可以保证新内核不能引导的情况,还可以进入linux进行其他操作。保存退出后,不要忘记了最重要的一步,运行/sbin/lilo,使修改生效。

9、重新生成ram磁盘

如果您的系统中的/etc/lilo.conf没有使用了ram磁盘选项initrd,略过。如果您的系统中的/etc/lilo.conf使用了ram磁盘选项initrd,使用mkinitrd initrd-内核版本号,内核版本号命令重新生成ram磁盘文件,例如我的Redhat 6.2:

mkinitrd initrd-2.2.14-5.0 2.2.14-5.0

之后把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:

initrd=/boot/initrd-2.2.14-5.0

ram磁盘能使系统性能尽可能的优化,具体参考/usr/src/linux/Documents/initrd.txt文件

10、重新启动,OK!

linux下将程序中用到的第三方库编译到自己的程序中我在linu

在开发过程中,我们有时需要依赖第三方库来扩展程序的功能。以下是如何处理第三方库在不同情况下的操作步骤。

首先,我们来看最佳情况——头文件和源文件。这种情况下,你只需要引用头文件并调用相关函数即可。例如,如果第三方库的头文件是abc.h,函数名是abc_test(),你只需要在代码中添加#include"abc.h",然后直接调用abc_test()函数。编译时,需要在Makefile中加入编译选项-I/abc/include,以便编译器能够找到库的头文件。这样的程序在运行时不需要额外的第三方库。

接下来是静态链接库的情况。在这种情况下,你同样需要引用头文件和相关函数,但此时你需要使用静态库libabc.lib。编译时,需要在Makefile中加入两个编译选项:一是-I/abc/include,用于将库的头文件包含进来;二是-L/abc/lib-labc,用于链接静态库。程序在运行时不再需要这个第三方库。

最后是动态链接库的情况。设动态链接库为libabc.so。调用动态链接库文件需要使用dlopen等函数。编译时,同样需要在Makefile中加入两个编译选项:一是-I/abc/include,用于包含库的头文件;二是-L/abc/lib-labc,用于链接动态库。但需要注意的是,程序在运行时需要这个第三方库的libabc.so文件。

以上是在不同情况下处理第三方库的步骤。在实际开发中,根据具体需求选择合适的库和链接方式,可以大大提高开发效率和程序的稳定性。

阅读剩余
THE END