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中,怎么用gcc编译文件
在终端中输入 gcc文件名-o目标文件名
然后./目标文件名就行了,没有目标文件名,自动存为 a
执行./a就行了。
在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是编译器所需要的参数,filenames给出相关的文件名称。
-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶
A)#include<myinc.h>
B)#include“myinc.h”
其中,A类使用尖括号(<>),B类使用双引号(“”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在目标文件的文件夹内搜索相应文件。
GCC执行过程示例
示例代码 a.c:
#include<stdio.h>
int main()
{
printf("hello\n");
}
预编译过程:
这个过程处理宏定义和include,并做语法检查。
可以看到预编译后,代码从5行扩展到了910行。
gcc-E a.c-o a.i
cat a.c| wc-l
5
cat a.i| wc-l
910
编译过程:
这个阶段,生成汇编代码。
gcc-S a.i-o a.s
cat a.s| wc-l
59
汇编过程:
这个阶段,生成目标代码。
此过程生成ELF格式的目标代码。
gcc-c a.s-o a.o
file a.o
a.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1(SYSV), not stripped
链接过程:
链接过程。生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存。
gcc a.o-o a
程序运行:
./a
hello
编辑本段
GCC编译简单例子
编写如下代码:
#include<stdio.h>
int main()
{
printf("hello,world!\n");
}
执行情况如下:
gcc-E hello.c-o hello.i
gcc-S hello.i-o hello.s
gcc-c hello.s-o hello.o
gcc hello.c-o hello
./hello
hello,world!
linux中如何用gcc编译用vi写的c文件
方法/步骤
1、进入linux系统,创建C文件“vim test.c”同时进入vim编辑界面也可以利用指令“touch test.c”创建后,然后“vim test.c”进入vim编辑界面。
2、vim编辑界面,由“ESC”建来切换三种模式,一般模式:在Linux终端中输入“vim文件名”就进入了一般模式,但不能输入文字。编辑模式:在一般模式下按i就会进入编辑模式,此时就可以写程序,按Esc可回到一般模式。
命令模式:在一般模式下按:就会进入命令模式,左下角会有一个冒号出现,此时可以敲入命令并执行。键盘“a”键可以直接进入编辑模式
3、通过输入底部指令“:set nu”显示行数。
4、输入完C代码后,记得“ESC”键切换,输入“:wq”保存退出。
5、指令“ls”显示当前目录下文件,我们可以见到存在的C文件编译“gcc-o test test.c”编译成功后,运行“./test”。