编译linux代码
1.编译单个源文件
[例如]在屏幕上打印"Hello,Linux."
[源代码]#include<stdio.h
#include<stdlib.h
int main(int argc,char **argv){printf("Hello,Linux.\n");exit(0);}将源文件保存为hello.c,开始进行编译
$gcc -o hello hello.c
编译成功完成后,在当前路径下,生成一个名为hello的文件,然后执行
$./hello在屏幕上,你将会看到打印结果:Hello,Linux.
说明:在默认情况下,编译成功完成后,会在当前路径下,生成一个名为a.out的文件,然后执行$./a.out便可打印结果,但通常可以通过选项-o来指定自己的可执行程序名称;
2.编译多个源文件
3.使用外部函数库
4.使用共享函数库和静态函数库5.gcc选项详细描述
㈡ 如何编译armlinux的go
Golang也就是Go语言,现在已经发行到1.4.1版本了,语言特性优越性和背后Google强大靠山什么的就不多说了。Golang的官方提供了多个平台上的二进制安装包,遗憾的是并非没有发布ARM平台的二进制安装包。ARM平台没办法直接从官网下载二进制安装包来安装,好在Golang是支持多平台并且开源的语言,因此可以通过直接在ARM平台上编译源代码来安装。整个过程主要包括编译工具配置、获取Golang源代码、设置Golang编译环境变量、编译、配置Golang行环境变量等步骤。
注:本文选用树莓派做测试,因为树莓派是基于ARM平台的。
1、编译工具配置
据说下个版本的golang编译工具要使用golang自己来写,但目前还是使用C编译工具的。因此,首先要配置好C编译工具:
1.1在Ubuntu或Debian平台上可以使用sudoapt-getinstallgcclibc6-dev命令安装,树莓派的RaspBian系统是基于Debian修改的,所以可以使用这种方法安装。
1.2在RedHat或CentOS6平台上可以使用sudoyuminstallgcclibc-devel命令安装。
安装完成后可以输入gcc--version命令验证是否成功安装。
2、获取golang源代码
2.1直接从官网下载源代码压缩包。
golang官网提供golang的源代码压缩包,可以直接下载,最新的1.4.1版本源代码链接:/golang/go1.4.1.src.tar.gz
2.2使用git工具获取。
golang使用git版本管理工具,也可以使用git获取golang源代码。推荐使用这个方法,因为以后可以随时获取最新的golang源代码。
2.2.1首先确认ARM平台上已经安装了git工具,可以使用git--version命令确认。一般linux平台都安装了git,没有的话可以自行安装,不同平台的安装方法可以参考:download/linux
2.2.2克隆远程golang的git仓库到本地
在终端cd到你想要安装golang的目录,确保该目录下没有名为go的目录。然后以下命令获取代码仓库:
gitclone/go
大陆地区可能会获取失败,在不翻墙的情况下我试了几次都没成功,原因大家都懂的。好在google已经将golang也托管到github上面,所以也可以通过下面命令获取:
gitclone/golang/go.git
视网络情况,下载可能需要不少时间。我2M的带宽花了将近两个小时才下载完,虽然整个项目不过几十兆==
下载完成后,可以看到目录下多了一个go目录,里面即为golang的源代码,在终端上执行cdgo命令进入该目录。
执行下面命令检出go1.4.1版本的源代码,因为现在汪敏指已经有新的代码提交上去了,最新的代码可能不是最稳定的:
gitcheckoutgo1.4.1
至此,最新1.4.1发行版的源代码获取完毕
3、设置golang的编译环境变量
主要有GOROOT、GOOS、GOARCH、GOARM四个环境变量需要设置,先解释四个环境变量的意义。
3.1GOROOT
主要代表golang树结构目录的路径,也就是上面git检出的go目录。一般可以不用设置这个环境变量,因为编译的时候默认会以go目录下src子目录中的all.bash脚本困配运行时的父目录作为GOROOT的值。为了保险起见,可以直接设拿芹置为go目录的路径。
3.2GOOS和GOARCH
分别代表编译的目标系统和平台,可选值如下:
GOOSGOARCH
darwin386
darwinamd64
dragonfly386
dragonflyamd64
freebsd386
freebsdamd64
freebsdarm
linux386
linuxamd64
linuxarm
netbsd386
netbsdamd64
netbsdarm
openbsd386
openbsdamd64
plan9386
plan9amd64
solarisamd64
windows386
windowsamd64
需要注意的是这两个值代表的是目标系统和平台,而不是编译源代码的系统和平台。树莓派的RaspBian是linux系统,所以这些GOOS设置为linux,GOARCH设置为arm。
3.3GOARM
表示使用的浮点运算协处理器版本号,只对arm平台有用,可选值有5,6,7。如果是在目标平台上编译源代码,这个值可以不设置,它会自动判断需要使用哪一个版本。
总结下来,在树莓派上设置golang的编译环境变量,可编辑$HOME/.bashrc文件,在末尾添加下面内容:
exportGOROOT=你的go目录路径
exportGOOS=linux
exportGOARCH=arm
编辑完后保存,执行source~/.bashrc命令让修改生效。
4、编译源代码
环境变量配置完成自后就可以开始编译源代码。在go目录下的src子目录中,主要有all.bash和make.bash两个脚本(另外还有两个all.bat和make.bat脚本适用于window平台)。编译实际上就是执行其中一个脚本,两者的区别在于all.bash在编译完成后还会执行一些测试套件。如果希望只编译不测试,可以运行make.bash脚本。使用cd命令进入go下src目录,执行./all.bash或者./make.bash命令即可开始编译。由于硬件情况不同,编译耗费的时间不同。在我的B型树莓派编译过程花费了将近半个小时,编译完成后执行的测试套件又花费了差不多一个小时,总共花费了一个半小时左右。
5、配置golang运行环境变量
编译完成后,go目录下会生成bin目录,里面就是go的运行脚本。为了以后使用方法,可以将这个bin路径添加到PATH环境变量中。同样编辑~/.bashrc文件,因为前面设置过GOROOT环境变量指向go目录了,所以只需要在末尾加上
exportPATH=$PATH:$GOROOT/bin
保存后同样执行source~/.bashrc命令让环境变量生效。
至此,golang源代码编译安装成功。执行goversion应该就能看到当前golang的版本信息,表示编译安装成功。
㈢ Linux内核源码如何编译
首先uname
-r看一下你当前的linux内核版本
1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname
-r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。
2、配置内核
make
menuconfig,根据你的需要来进行选择,设置完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。
3、编译,依次执行make、make
bzImage、make
moles、make
moles
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下怎样编译程序
进入终端,用cd 命令切换到c文件的目录
编译命令:gcc -o exec_file (可执行文件名) soucre_file.c(源文件)
然后 用命令 ./exec_file 运行
更高级的是用make 工具,自动编译
㈤ 请教如何在Windows上编译Linux的汇编代码
总共又三种方案枯慧:肆败毕mingw+codeblocks,是windows下的gcc编译工具+跨的轻量ide,可以编译c++的程序,还可以使用wxWidget(跨的界面工具)
使用cygwin,是windows下中间件级别的编译工具。可以在cygwin下用命令行编译程序。
使用vmware或者其他虚拟机,安装目标linux系统,并且编译。这是虚拟硬件级别的编译工具,其编译的程序是完全可以在linux系裂芹统上运行的。
㈥ Linux内核源码如何编译Ubuntu源代码在哪里呢
编译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 moles
7、安装模块
make moles_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系统中编译并运行c程序
linux如何编译c程序呢,下面就让我们来看看吧。
1、打开Linux系统,启动shell命令终端。
2、在终端中输入gedithelloworld.c命令并回车。
3、进入之后进行编译,编译好后保存并退出。
4、输入gcchelloworld.c命令并回车,等待编译成功。
5、输入命令./a.out即可运行程序。
以上就是小编的分享,希望能帮助的大家。
㈧ 如何在Windows中编译Linux Unix的代码
方法一:如何实现在Windows7下编写Linux程序,写完程序以后档巧,不用拷贝文件,直接在Linux(RHEL6.5)机猛粗器上编译最新的代码。
首先将Windows的代码文件夹设置为共享文件夹:
在RHEL6.5上,利用mount命令把Win7下的文件夹给mount到本地的一个文件夹
其中192.168.59.1是Win7的OS,VMTool是本地的一个文件夹。
在~/.bash_profile中添加如下行,这样每次启动的时候,就会自动mount这个文件夹。
mount //192.168.59.1/DIMMTool /root/Desktop/DIMM -o username=zxj1988,password=2720142V
方法二:
利用SAMBA,设置Linux中的文件夹为共享文件夹,在Windows下直接访问共享文件夹。
1. 安装samba:
1.1 rpm -qa| grep samba
如果以上的命令的结果为空,证明Linux上没有安装samba。需要安装samba
1.2 挂载RHEL6.5安装镜像,并进入到该文件夹中来。
1.3
1.4 进入到Package目录下
1.5 ls | grep samba
1.6 利用rpm -ivh sambaXXX命令去安装相应的samba包。安装好以后,再跑rpm -qa|grep samb会得到如下结果:
可以通过service smb 来判断smb是否安装成功
2. 配置共享文件夹
2.1 新建共享文件夹,如mkdir /home/test
注意:不要创建在/root目录下,否则只有windows的administrator,admin两个用户才能访问得到。
2.2 设置其共享权限 chmod 777 /home/test
2.3 设置其所有者 chown -R nobody /home/test
如果Windows的登录用户是administrator或者admin的话,就不用2.3的设置。
对于Windows的其他用户,如果没有2.3的设置,那么他是无法修改test目录下的文件的。
2.4 编辑/etc/samba/smb.conf, 将/home/test设置为可共享的目录。
· vim /etc/samba/smb.conf
·
· 找到security这行并将#注释符号去掉改成
· security = share #共享模式
·
· 添加如下代码:
·
· [share]
· comment = share
· path = /home/test #设置共享文件夹目录
· browseable = yes
· guest ok = yes
· writable = yes
·
2.5 重启smb服务,使sbm.conf的新配置生效
service smb restart
3. 关闭系统防火墙,并且将sellinux设置为disabled。否则会出现windows下能够看到linux共享的目录,但是看不到文件的现象。
设置sellinux为disabled的方法如下:
[root@localhost ~]#vim /etc/selinux/config
将SELINUX=enforcing 改成SELINUX=disabled
保存
[root@localhost ~]# reboot或init 6
4. 在windows下访问//[linux_ip] 来访问共享文枝蠢镇件
㈨ 如何在linux环境下编辑一个c语言源程序并将其编译为可执行文件
打开安装好的Linux系统(ubuntu18.04)
1.安装编辑器
使用语句:sudo apt-get install vim安装vim,可以在安装前查看是否安装vim编辑器。(特别提示:在安装vim前最好将软件更新,使用指令sudo apt-get update.)之所以要加sudo的原因是这些安装和更新软件的时候需要使用管理员权限才可以进行。
2.安装gcc编译器
和安装vim类似使用sudo apt-get install gcc,安装完成后可以使用cc-v来查看编译器版本信息等。cc -v界面如下:
㈩ linux 怎么编译c的源程序的gcc,编译命令是什么
在Linux下面,如果要编译一个C语言源程序,我们要使用gcc编译器。
先将源文件编译成目标文件:gcc - c hello.c
生成hello.o文件,再将目标文件编译成可执行文件:gcc -o hello hello.o
如:
int main(int argc,char **argv)
{
printf("Hello Linux ");
}
(10)编译linux代码扩展阅读:
在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,这里只介绍其中最基本、最常用的参数。具体可参考GCC Manual。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是编译器所需要的参数,filenames给出相关的文件名称。
网络_gcc