导航:首页 > 源码编译 > 手动编译源码

手动编译源码

发布时间:2023-01-14 01:27:44

‘壹’ 源码怎么编译

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

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

‘叁’ 编译源码 后,怎么改 java源码重新编译

Java程序的运行需要经历三个步骤:

  1. 编辑

  2. 编译

  3. 运行

其中,编辑是编写源码的过程,编译是将源码编译成.class文件。运行时,找的就是.class文件,运行程序时,以main函数为入口,开始执行程序,重点是,下次程序运行时,JVM虚拟机不会再次编译源码,而是直接寻找对应的.class文件,从而运行程序。

所以,编译源码后,如果有新的修改,需要重新编译,生成.class文件,然后,才会执行。

修改源码后若不编译便直接运行,JVM使用的仍然是上一次运行的.class文件。

‘肆’ Linux中源码编译安装程序包括哪些基本步骤

第一步:创建编译脚本
进入到源码目录 执行 ./configure --prefix=/.../.....(--prefix=后面是想要安装到的目录)
第二部:编译
执行 make
第三部:安装
执行 make install
当然上面这几部都是最基本的步骤,如果想优化编译,要在./configure 后面加参数,或者configure之后手动修改Makefile文件 如O2(优化等级) FLAGS 等编译参数的修改。
--------------------------------------------------------------------------------------------------------------
以上都是源码包的编译
如果是自己写的C代码 直接 用gcc编译即可。
例如 编译test.c
执行 gcc -o test test.c即可将test.c编译为可执行的文件 test

自己打出来的 要采纳啊!

‘伍’ myeclipse编写代码,怎么手动编译

MyEclipse是自动编译java文件的。
1、在建立类的时候,就进行编译了
2、当修改类源码的时候,会点击保存这个动作,在这个时候,又会重新编译类为.class文件

3、点击菜单栏 Project,选择Build Automatically 这个会也会自动编译的

‘陆’ 自己可以编译安卓源码吗

用最新的Ubuntu 16.04,请首先确保自己已经安装了Git.没安装的同学可以通过以下命令进行安装:

sudo apt-get install git git config –global user.email “[email protected]” git config –global user.name “test”

其中[email protected]为你自己的邮箱.

简要说明

android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述.

源码下载

由于某墙的原因,这里我们采用国内的镜像源进行下载.
目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明.(参考:科大源,清华源)

repo工具下载及安装

通过执行以下命令实现repo工具的下载和安装

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

补充说明
这里,我来简单的介绍下repo工具,我们知道AOSP项目由不同的子项目组成,为了方便进行管理,Google采用Git对AOSP项目进行多仓库管理.在聊repo工具之前,我先带你来聊聊多仓库项目:

我们有个非常庞大的项目Pre,该项目由很多个子项目R1,R2,...Rn等组成,为了方便管理和协同开发,我们为每个子项目创立自己的仓库,整个项目的结构如下:


这里写图片描述

执行完该命令后,再使用make命令继续编译.某些情况下,当你执行jack-admin kill-server时可能提示你命令不存在,此时去你去out/host/linux-x86/bin/目录下会发现不存在jack-admin文件.如果我是你,我就会重新repo sync下,然后从头来过.

错误三:使用emulator时,虚拟机停在黑屏界面,点击无任何响应.此时,可能是kerner内核问题,解决方法如下:
执行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通过使用kernel-qemu-armv7内核 解决模拟器等待黑屏问题.而-partition-size 1024 则是解决警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一开始编译的版本是aosp_arm-eng,使用上述命令仍然不能解决等待黑屏问题时,不妨编译aosp_arm64-eng试试.

    结束吧

    到现在为止,你已经了解了整个android编译的流程.除此之外,我也简单的说明android源码的多仓库管理机制.下面,不妨自己动手尝试一下.

    ‘柒’ 如何自己编译源代码

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

    ‘捌’ 怎么使用Android源码编译c模块生成可执行文件

    1. 在./development目录下创建一目录 如:myhello
    2. 进入hello目录,在其下编写自己的.c文件,如: myhello.c
    #include <stdio.h>
    int main()
    {
    printf("hello world\n");
    exit(0);
    //return 0;
    }
    3. 在hello目录中,编写Android.mk, 内容如下:
    LOCAL_PATH:= $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE := myhelloworld
    LOCAL_SRC_FILES := myhello.c
    LOCAL_MODULE_TAGS := optional
    include $(BUILD_EXECUTABLE)
    4. 回到Android源代码顶层目录,进行编译,make myhelloworld
    5. 生成的可执行文件位于:out/target/proct/lotus/system/bin/ 目录下
    6. adb push 到手机 /data 目录下,然后进入adb shell,到data目录下,执行./myhelloworld 皆可

    手动编译连接【arm-eabi-gcc 的目录随andorid的版本而有变化,还有就是需要链接的文件如果比较多时,需要很多-l 就很麻烦了】
    7、编译成目标文件:
    #$(yourAndroid)/prebuilt/linux-x86/toolchain/[arm-eabi-4.2.1]/bin/arm-eabi-gcc -I bionic/libc/arch-arm/include/ -I bionic/libc/include -I bionic/libc/kernel/common -I bionic/libc/kernel/arch-arm -g -c helloworld.c -o hello.o
    8、生成可执行代码:
    #$(yourAndroid)/prebuilt/linux-x86/toolchain/[arm-eabi-4.2.1]/bin/arm-eabi-gcc -nostdlib -Bdynamic -Wl,-T,build/core/armelf.x -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,noreloc -o helloworld -Lout/target/proct/[generic]/obj/lib -Wl,-rpath-link=out/target/proct/[generic]/obj/lib -lc hello.o -entry=main

    其中[ ]中部分根据实际情况修改

    **************************************************
    实验:
    1. 建目录(my Android)/development/test, 在该目录下新建 Android.mk和fb_test.c文件

    2. Android.mk文件

    LOCAL_PATH:= $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE := myfbtest
    LOCAL_SRC_FILES := fb_test.c
    LOCAL_MODULE_TAGS := optional
    include $(BUILD_EXECUTABLE)

    3. 以下为fb_test.c
    #include <fcntl.h>
    #include <linux/fb.h>
    #include <sys/mman.h>
    #include <linux/kd.h>

    #include <stdio.h>

    #define FBBIT_PER_PIXEL 32
    #define FBBIT_PIXEL_IMAGE 16
    #define PIXELS_WIDTH_BYTE 4
    #define BYTE_PER_PIXEL 3
    #define FB_GRAPHICS_PATH "/dev/graphics/fb0"
    #define DEV_TTY0_PATH "/dev/tty0"

    #define DISPLAY_ERROR -1
    #define DISPLAY_SUCCESS 0

    #define GET_BATTERYCAPACITY_ERR -1

    #define MAX_STR 255

    static struct {
    int fd;
    void *pixels;
    struct fb_fix_screeninfo fixed;
    struct fb_var_screeninfo var;
    int align_xres;
    } fb;

    int getBatteryCapacity(void)
    {
    FILE *in;
    char tmpStr[MAX_STR + 1];
    char capfile[] = "/sys/class/power_supply/battery/capacity";

    if (capfile == NULL)
    return GET_BATTERYCAPACITY_ERR;

    in = fopen(capfile, "rt");
    if (in == NULL)
    return GET_BATTERYCAPACITY_ERR;

    if (fgets(tmpStr, MAX_STR, in) == NULL) {
    printf("Failed to read battery capacity!\n");
    fclose(in);
    return GET_BATTERYCAPACITY_ERR;

    }

    printf("Battery capacity(ascii): %s\n", tmpStr);
    fclose(in);

    return 0;//atoi(tmpStr);
    }

    static int vt_set_graphicsmode(int graphics)
    {
    int fd, r;
    fd = open(DEV_TTY0_PATH, O_RDWR | O_SYNC);
    if (fd < 0)
    return DISPLAY_ERROR;
    r = ioctl(fd, KDSETMODE, graphics);
    close(fd);
    return r;
    }

    int display_init(void)
    {
    fb.fd = open(FB_GRAPHICS_PATH, O_RDWR);
    if (fb.fd < 0)
    return DISPLAY_ERROR;

    if (ioctl(fb.fd, FBIOGET_FSCREENINFO, &fb.fixed) < 0)
    return DISPLAY_ERROR;
    if (ioctl(fb.fd, FBIOGET_VSCREENINFO, &fb.var) < 0)
    return DISPLAY_ERROR;
    fb.align_xres = fb.fixed.line_length /
    (fb.var.bits_per_pixel >> BYTE_PER_PIXEL);

    fb.pixels = mmap(0, fb.fixed.line_length * fb.var.yres_virtual,
    PROT_READ | PROT_WRITE, MAP_SHARED, fb.fd, 0);
    if (fb.pixels == MAP_FAILED)
    return DISPLAY_ERROR;

    vt_set_graphicsmode(KD_GRAPHICS);

    memset(fb.pixels, 0, fb.fixed.line_length * fb.var.yres_virtual);
    //display_update(fb.pixels, fb.align_xres, fb.var.yres);
    fb.var.activate = FB_ACTIVATE_FORCE;
    ioctl(fb.fd, FBIOPUT_VSCREENINFO, &fb.var);

    printf("display_init ok\n");

    return DISPLAY_SUCCESS;
    }

    void display_on(void)
    {
    ioctl(fb.fd, FBIOBLANK, FB_BLANK_UNBLANK);
    }

    void display_off(void)
    {
    ioctl(fb.fd, FBIOBLANK, FB_BLANK_POWERDOWN);
    }

    int main()
    {
    display_init();
    display_off();//关显示屏

    getBatteryCapacity();
    sleep(5);

    display_on();//开显示屏

    return 0;
    }

    ‘玖’ 如何用visual studio2010编译已经写好的C#的源代码

    你要把关联和属性都设置好,然后使用生成->解决方案(ctrl+shift+B),也可以在命令提示栏里手动编译。使用F5是先进性编译,然后开始调试。

    ‘拾’ 【路由器】OpenWrt 手动编译 ipk

    .ipk 文件是可以通过 OpenWrt 的包管理软件 opkg 直接安装,好比 .deb 文件与 apt 的关系。虽然官方的软件仓库已经很丰富了,但是有时仍然需要从源码编译一些第三方的软件使用,例如锐捷认证等

    但是由于路由器平台通常与常用的服务器或者个人 PC 的处理器架构不同,并且路由器的处理器本身性能较弱,几乎不可能直接在路由器上进行编译生成 .ipk 文件,因此需要交叉编译来实现

    而官方的 OpenWrt 仓库就提供了一个方便使用的交叉编译环境

    以 Debian / Ubuntu 为例,参考 官网给出的要求 ,可以通过下面命令来进行安装依赖包

    安装/更新好这些依赖之后,就可以通过 git 拉取 OpenWrt 仓库了

    通常由于仓库较大以及网速问题,可能会需要很久,其实可以通过 --depth 来限制拉取的仓库深度,或者通过镜像站来加速拉取,当然也可以两者同时采用

    进入 openwrt 仓库后,首先需要更新软件包列表 feeds ,它是在 OpenWrt 中共用位置的包的集合。运行以下命令即可更新内置软件包列表并链接到编译工具中:

    通常使用图形化菜单界面来进行配置编译选项,依次配置处理器架构、具体的处理器型号以及设备

    以小米 mini 路由器为例,应该将他们配置成如下图所示

    这一步就是获取对应设备交叉编译所需的编译链

    可以先搜索有没有已经配置好的含有 Makefile 的仓库,有了适配过的 Makefile 文件就可以很方便的来编译源码生成 .ipk 文件了

    以 minieap 为例, github 上有已经完成的仓库,依次可以直接拉取来编译

    在拉取完成仓库后,就可以再次配置编译选项,将需要编译成 .ipk 的功能配置成模块编译,也就是标记成 M

    对于 minieap 来说,在 Network 找到对应选项并配置成 M 即可,如下图

    配置完成后就可以进行编译了,编译命令也很简单,以 minieap 为例如下所示

    编译完成后, .ipk 文件会生成在 ./bin/packages/<YourArchitecture>/base 目录下,将其拷贝到路由器上就可以通过 opkg 进行安装使用了

    阅读全文

    与手动编译源码相关的资料

    热点内容
    gcc编译vi文件 浏览:61
    安卓连airpods怎么找耳机 浏览:925
    加密货币转账教程 浏览:227
    程序员小灰hashmap 浏览:836
    国语pdf版 浏览:182
    少儿编程作品美丽的小房子 浏览:970
    服务器卡在网页上怎么办 浏览:54
    用python自制编译器 浏览:951
    android分享新浪微博客户端 浏览:26
    系统中服务器在哪里下载地址 浏览:1001
    新a4安卓手机怎么投屏 浏览:173
    pdftoemf 浏览:886
    java接口可以实现接口吗 浏览:59
    vb编程10个随机函数 浏览:21
    程序员个人简介100 浏览:772
    土木工程师算法工程师 浏览:92
    javaexcel导入oracle 浏览:880
    如何设置异地服务器 浏览:882
    为什么安卓手机蓝牙耳机不会弹窗 浏览:547
    linuxf77编译器安装教程 浏览:949