当前位置:首页 » 编程软件 » 源码编译

源码编译

发布时间: 2022-01-21 01:13:10

Ⅰ 如何自己编译源代码

我们使用编译器将自己的源代码转换成目标代码, 使用链接器将我们的目标代码链接成一个可执行程序。另外, 我们使用一些程序在计算机中输入源代码文本并且编辑它。这些是最初的和最重要的工具, 它们构成程序员的工具集合或“程序开发环境”。 如果你使用的是命令行窗口, 就像很多专业程序员所做的那样, 你将不得不自己来编写编译和链接命令。如果你使用IDE(“交互式开发环境”或“集成式开发环境”), 就像很多程序员所做的那样, 简单地点击正确按钮就可以完成这个工作。附录C介绍了如何在你的C++实现中编译和链接。 IDE通常包括一个具有有用特性的编辑器, 例如用不同颜色的代码来区分你的源代码中的注释、 关键字和其他部分, 以及其他帮助你来调试代码、 编译和运行代码的功能。调试是发现程序中的错误和排除错误的活动, 你在前进的道路上会听到很多有关它的内容。 我们使用微软的Visual C++作?喑炭 ⒒肪呈道 H绻 颐羌虻サ厮怠氨嘁肫鳌被蚴恰癐DE”的某些部分, 那就是所指Visual C++系统。但是, 你可以使用一些提供最新的、 符合标准的C++实现的系统。我们所说的大多数内容(经过微小的修改)对所有的C++实现都将是正确的, 并且其代码可以在任何地方运行。在工作中, 我们使用几种不同的实现。

Ⅱ 如何编译c语言源代码

下载一个VC2005软件,把代码复制到里面,设置好C运行环境,点击编译,OK,然后点击那个感叹号,直接链接运行,就OK了。

Ⅲ 怎么从源代码编译成exe程序

1. 打开c语言编辑工具(vc6.0),写入所编程序源代码。

2. 点击 组建-编译-执行。

3. 执行完程序,点击回车。

4. 点击 文件另存为 把文件存到你能够找到的文件夹中,比如桌面。

5. 打开你刚保存文件的文件夹,内含有一个 Bebug 的文件夹。注意:如果没有,请再次执行第二步。

6. 打开 Bebug 的文件夹,有一个以.exe为后缀名的文件,就是所需要的可执行文件,将其拷贝出,就可以单独执行,也就是一个小软件生成了。

源码怎么编译

使用编译器如VC++6.0,VC++2008

Ⅳ 怎样从源码编译rom

本帖最后由 pigjohn 于 2014-2-10 20:24 编辑

一、你需要:
1.linux系统环境
教程使用ubuntu 12.04(LTS)
硬盘安装或虚拟机安装应该都ok。
2.电脑配置不要太差
二、搭建编译环境:
1.java安装配置
1) 删除旧版本java
ctrl+alt+t 打开终端。
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*

sudo apt-get purge sun-java
复制代码
2) 安装java 1.6
添加软件源,打开终端输入
sudo add-apt-repository ppa:webupd8team/java
复制代码
下载安装,打开终端输入
sudo apt-get update && sudo apt-get install oracle-java6-installer
复制代码
跟随屏幕提示,你需要接受使用条款。
安装完成后,终端输入java -version,你会看到java版本信息。类似
java version “1.6.0_37″

Java(TM) SE Runtime Environment (build 1.6.0_37-b06)

Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
复制代码
2.安装依赖软件
sudo apt-get install git-core gnupg flex bison gperf build-essential \

zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5-dev \

ia32-libs x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 \

lib32z-dev libgl1-mesa-dev g++-multilib mingw32 \

tofrodos python-markdown libxml2-utils xsltproc readline-common \

libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev \

lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 \

libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev \

libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.6-dev
复制代码
等待安装配置完成
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
复制代码
三、源码下载
1.repo脚本下载
$ mkdir ~/bin

$ PATH=~/bin:$PATH

$ curl [url]https://dl-ssl.google.com/dl/googlesource/git-repo/repo[/url] > ~/bin/repo

$ chmod a+x ~/bin/repo
复制代码
2.初始化repo同步
mkdir ~/cm11

cd ~/cm11

repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0

复制代码
你需要按提示输入用户名和邮箱。
3.9003device源码
cd ~/cm11/.repo

mkdir local_manifests && cd local_manifests

gedit roomservice.xml
复制代码
粘贴以下内容
<?xml version="1.0" encoding="UTF-8"?>

<manifest>

<project name="dhiru1602/android_device_samsung_galaxysl" path="device/samsung/galaxysl" remote="github" revision="cm-11.0" />

<project name="dhiru1602/android_vendor_samsung_galaxysl" path="vendor/samsung/galaxysl" remote="github" revision="cm-11.0" />

<project name="dhiru1602/android_kernel_samsung_latona" path="kernel/samsung/latona" remote="github" revision="cm-11.0" />

<project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" revision="cm-11.0"/>

</manifest>
复制代码
保存。
4.同步源码
cd ~/cm11

repo sync -j8
复制代码
源码有好几个G,同步时间长短取决于你的网络速度。
四、编译
1.编译之前同步最新源码
repo sync
复制代码
2.初始化环境
. build/envsetup.sh
复制代码
3.编译
brunch galaxysl
复制代码
接着喝杯茶,编译时间长短取决于你的电脑配置。
不出意外,你会最终得到~/cm11/out/target/proct/galaxysl/cm-11-XXXXX-UNOFFICIAL-galaxysl.zip
五、刷机测试

以上就是编译cm11的过程。

对于其他rom,类似。
mokee:
mkdir ~/mokee && cd ~/mokee

repo init -u https://github.com/MoKee/android.git -b kk_mkt

Ⅵ linux中源码编译需要哪些软件

一、程序的组成部分
Linux下程序大都是由以下几部分组成:
二进制文件:也就是可以运行的程序文件
库文件:就是通常我们见到的lib目录下的文件
配置文件:这个不必多说,都知道
帮助文档:通常是我们在Linux下用man命令查看的命令的文档
二、Linux下程序的存放目录
Linux程序的存放目录大致有三个地方:
/etc,
/bin,
/sbin,
/lib
:系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上
/usr/bin,/usr/sbin,/usr/lib:操作系统核心功能,可以单独分区
/usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/etc,/usr/local/man:这个用于安装第三方程序,分别对应了二进制文件、库文件、配置文件、帮助文档的目录
通常来说我们安装程序就安装在
/usr/local目录下
三、编译安装源程序
1、使用如下命令查看当前是否安装了gcc编译器,没有可以先用yum安装gcc
gcc
--version
#查看是否安装gcc
2、解压源码包,例如:
tar
-xvf
nginx-1.7.7.tar.gz
#解压源码包
3、进入解压好的源码包:
cd
nginx-1.7.7
#进入源码包
4、执行configure文件,此文件有两个功能:1、让用户选定编译特性;2、检查编译环境。configure执行后将生成MakeFile文件。例如:
./configure
--prefix=/usr/local/nginx
--conf-path=/etc/nginx/nginx.conf
其中我们通过--prefix制定了安装路径,通过--conf-path制定了配置文件的具体位置。注意:不是所有的程序的configure参数都是一样的
可以使用
./configure
--help查看详细参数说明。如果该程序所依赖的库在当前系统中没有安装,则会导致configure最后报错,遇到这种情况就需要你先安装依赖库。
5、执行make命令,编译程序
make
6、编译成功后就可以安装了,执行如下命令
make
install
到此程序就算安装完成了,但是不要忘了还有后续的配置哦
四、配置程序
1、修改PATH环境变量,以能够识别此程序的二进制文件路径;
修改/etc/profile文件,在文件中
添加
export
PATH=$PATH:/path/to/somewhere#记得是可执行文件所在的目录,路径中不要包含可执行文件。
然后执行

source
/etc/profile
#是我们的修改生效

2、默认情况下,系统搜索库文件的路径/lib,
/usr/lib;
要增添额外搜寻路径(注意:有的程序不提供库文件,那就不需要此设置了)
在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;然后执行如下命令使其生效
ldconfig
3、如果程序提供了库文件,也会相应的提供头文件,一般在安装目录的include目录下,系统默认扫描头文件的路径是:/usr/include。我们可以在/usr/include下用链接连接到我们安装程序的头文件。
ln
-s
/usr/local/nginx/include
/usr/include/yourname
4、可能程序还提供了帮助文档,一般是安装目录下的man目录,为了我们可以使用man命令查看我们程序的帮助文档,我们需要:在/etc/man.config中添加一条MANPATH,指向我们的文档目录

Ⅶ 如何编译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内核版本。是不是你刚下的那个呢!有没有成就感?

Ⅷ 怎么把源代码编译成可执行程序

可以引出为”可执行jar“(项目必须有mian方法),然后双击运行即可。 第一步:在项目上右击,选择”Export“,之后找到”Runnable Jar file“。 第二步:在”Launch“下拉选中选择”main“方法入口类,然后选择”Browse“后,输入”jar“名称,点击”Finsh“即...

Ⅸ 如何将源代码编译成jar包

先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:

用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...

选项:

-c 创建新的存档

-t 列出存档内容的列表

-x 展开存档中的命名的(或所有的〕文件

-u 更新已存在的存档

-v 生成详细输出到标准输出上

-f 指定存档文件名

-m 包含来自标明文件的标明信息

-0 只存储方式;未用zip压缩格式

-M 不产生所有项的清单(manifest〕文件

-i 为指定的jar文件产生索引信息

-C 改变到指定的目录,并且包含下列文件:

如果一个文件名是一个目录,它将被递归处理。

清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。

首先在资源文件当前目录写一个清单文件example.mf

mf文件应是以下格式:
第一行为:
Main-Class: Hello
然后最少两个空行。
其中的Hello.class是你写的程序中main函数所在的那个类名。
有两点必须记得:
1,在第一行中"Main-class:"之后一定要有一个空格。后有最少两个空行
2,类名不能写成Hello.class的格式,要省了后辍。
我试过了,你错的原因是"Main-class:"之后没有一个空格。
在CLASS目录下运行:jar cfm example.jar example.mf A.class B.class

示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:


jar cvf classes.jar Foo.class Bar.class

示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有文件存档到一个名为 'classes.jar' 的存档文件中:

jar cvfm classes.jar mymanifest -C foo/ .

来个小例子试试看:

我们只有一个HelloWorld,如下:

public class HelloWorld{
public static void main(String[ ] args){
System.out.println("Hi, Hello World!");
}
}
将这个java文件存到C盘跟目录下,ok,接下来,

在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错 hello.jar 。

基本的步骤我们现在都知道了,你可以自己去尝试一下随着jar后面的参数的不同,结果有什么变化。
紧接着我们看看如何运行我们的jar包。

在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看:

Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)

就是这样。这里我们对它进行修改,加一句:Main-Class: HelloWorld (在第三行)。这个就是我们之前写的那个类,也就是我们的入口类。也即,

Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
Main-Class: HelloWorld

接下来,我们在命令提示符里执行:

jar umf MANIFEST.MF app.jar (应该是hello.jar吧)

这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新。你不妨可以再进去看看是不是添上了Main-
Class: HelloWorld这一句。 (是吗,我怎么没试出来,提示
java.io.FileNotFoundException:MANIFEST.MF(系统找不到指定的文件)怎么回事?
)

Ok,这个最后的一步了,来验证我们做的一切,在命令提示符中输入:

java -jar hello.jar(执行)

出现了什么, Hi, Hello World!

我们再来看看jar文件在tomcat中发布,注意:在tomcat中我们就不能再用jar这种格式,而改war格式,它是专门用于web应用的,其实整个过程下来基本上和jar是类似的:

先准备我们要打包的资源。

找到存放tomcat的webapps目录,进到其中,新建一个文件夹,这里命名为hello,再进去新建WEB-INF文件夹,再进去新
建 classes文件夹,此时我们也将我们唯一的servlet,HelloWorld.java放到这里,在与classes目录同级下建立一文
件 web.xml。Ok,目前我们初步建立了一个简单的web应用。

这是HelloWorld.java:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("");
out.println("");
out.println("");
out.println("Hello, World!");
out.println("");
}
}//end here!

对它编译。下面是web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>

在命令提示符下进到先前创制的hello目录下,执行 jar cvf hello.war * ,我们便得到hello.war。将它拷贝至webapps目录下,ok,来看最后一步,打开tomcat的目录conf中的server.xml,加入:

<Context path="/hello" docBase="hello.war" debug="0" reloadable="true"/>
大功告成!运行它,启动tomcat,后在浏览器中输入http://localhost:8080/hello/HelloWorld,有了吗?

最后,如果你想用ant来完成以上的打包活动,下面就告诉你:
对于jar来说。在build.xml中,

<target name="jar">
<jar destfile="${app_home}/hello.jar">
<fileset dir="${dest}" includes="**"/>
<!--fileset dir="${dest}" includes="**/action.properties"/-->
</jar>
</target>
对于war,

<war warfile="hello.war" webxml="./WEB-INF/web.xml">
<fileset dir="html"/>
<lib dir="lib/">
<exclude name="oracle*.jar"/>
</lib>
<classes dir="build/servlets">
<include name="**/*.class"/>
</classes>
</war>
好了,就这么多,希望对你有点帮助。:)

补充:

jar基本操作:

1. 创建jar文件
jar cf jar-file input-file(s)
c---want to Create a JAR file.
f---want the output to go to a file rather than to stdout.
eg: 1)jar cf myjar.jar query_maintain_insert.htm
2)jar cvf myjar.jar query_maintain_insert.htm
v---Proces verbose(详细的) output.

3)jar cvf myjar.jar query_maintain_insert.htm mydirectory
4)jar cv0f myjar.jar query_maintain_insert.htm mydirectory
0---don't want the JAR file to be compressed.
5)jar cmf MANIFEST.MF myjar.jar yahh.txt
m---Used to include manifest information from an existing manifest file.
6)jar cMf MANIFEST.MF myjar.jar yahh.txt
M---the default manifest file should not be proced.
7)jar cvf myjar.jar *
*---create all contents in current directory.

2. 察看jar文件
jar tf jar-file
t---want to view the Table of contents of the JAR file.
eg: 1)jar vft yahh.jar
v---Proces verbose(详细的) output.

3. 提取jar文件
jar xf jar-file [archived-file(s)]
x---want to extract files from the JAR archive.
eg: 1)jar xf yahh.jar yahh.txt(仅提取文件yahh.txt)

2)jar xf yahh.jar alex/yahhalex.txt(仅提取目录alex下的文件yahhalex.txt)

3)jar xf yahh.jar(提取该jar包中的所有文件或目录)

4. 修改Manifest文件
jar cmf manifest-addition jar-file input-file(s)
m---Used to include manifest information from an existing manifest file.

5. 更新jar文件
jar uf jar-file input-file(s)
u---want to update an existing JAR file

Ⅹ 如何编译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内核版本。是不是你刚下的那个呢!有没有成就感?

热点内容
我的世界国服服务器开服 发布:2024-12-22 10:09:55 浏览:542
标题编译策略 发布:2024-12-22 10:04:45 浏览:221
android开发xml 发布:2024-12-22 10:00:20 浏览:63
sql服务器名称什么时候能写ip 发布:2024-12-22 09:53:19 浏览:128
域控制服务器怎么设置ip 发布:2024-12-22 09:43:23 浏览:882
csvreaderpython 发布:2024-12-22 09:43:13 浏览:768
linux更改用户 发布:2024-12-22 09:35:19 浏览:505
信息的编程加工 发布:2024-12-22 09:33:48 浏览:116
移动办公专家服务器地址写什么 发布:2024-12-22 09:25:13 浏览:147
编程CBA 发布:2024-12-22 09:10:11 浏览:288