㈠ make会把所有的代码都重新编译吗
make程序实际上是对makefile文件进行解析和执行。
需要编译的文件,引用的头文件,库等都需要在makefile文件中进行标识。
make程序会根据makefile的内容进行编译。
所以make并不一定编译所有的代码。需要查看makefile文件中定义了哪些文件需要进行编译。
㈡ 如何重新编译linux内核
因为一般电脑安装的系统都是Windows,而整个编译过程都需要在Linux环境下实现,所以最好是在虚拟机里安装Linux系统来完成这一过程。我使用的虚拟机是VMware-workstation-full-v7.1.4。
然后,我们需要下载一个较高版本的Linux系统的镜像文件,安装在虚拟机上,作为编译环境。我使用的是ubuntu-11.04-desktop-i386。之所以选择较高版本,是因为它的界面比较方便用户操作。
然后下载一个Linux内核源代码文件,将它保存到虚拟机上新安装的系统中去。并解压到/usr/src目录。我使用的是linux-2.6.36,下载低版本的原因是,小巧轻便,易于编译。
解压命令如下:
bzip2 -d linux-2.6.36.tar.bz2
tar -xvf linux-2.6.36.ta
修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一个系统调用函数。自行编写一个简单的程序即可,只为测试用。
修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,为新添加的程序配置系统调用号。
在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系统调用表。
下面就是最重要的内核编译与安装:
首先配置编译信息,使其生成适合当前机器的Makefile,输入make oldconf ig。
接着还要输入make menuconfig,在字符界面下进行必要的细微的修改。
然后要经过四步编译过程(直接输入命令即可):
(1)make bzImage
将内核编译为压缩映像,存储在源码根目录下的“System.map”文件中。
(2)make moles
编译各个模块。
(3)sudo make moles_install
安装模块
(4)sudo make install
安装内核
第(2)(3)步等待时间较长,可能需要数个小时,请耐心等待。
无报错的话重启进入GRUB界面,就可以看到新编译的内核了。
按回车键进入我们编译的目标内核中,用关键词搜索查看新增加的系统调用“my call”是否已在内核中:
编写测试程序,调用新添加的系统调用:
测试成功,说明系统调用添加成功,进而说明内核编译成功!
以上的办法你可以试一下,希望对你有所帮助。
㈢ 为什么我每次编译都是全部重新编译
这里以 C 语言源程序为例,关于多个 C 语言源程序之间的编译顺序问题,这个是需要在 MAKEFILE 文本文件中写好多个 C 语言源程序的先后顺序,如果多个 C 语言源程序的先后顺序写得不正确,那么在使用 make 命令对 MAKEFILE 做相关的编译、链接工作时,就会把所有的 C 源程序都重新编译一遍(按理说:MAKEFILE 的最大好处就是:如果整个软件系统由多个 C 源程序组成,但是只有其中一个 C 源程序的代码做了改动,而其他的源代码没有做过任何改动,那么只需要编译这一个 C 源程序的目标文件,然后再和别的 C 源程序的目标文件相链接,生成最终的可执行文件即可,而不需要整个都重新编译一遍)
你再仔细把你的 MAKEFILE 文件中的各个 C 源程序的先后次序检查一下,看看是否写得有错误。写 MAKEFILE 文件也是需要仔细推敲的。
㈣ oracle数据库开发人员说‘需要重新编译一下’是什么意思 是说要重新跑某个过程吗
重新编译,就是某个过程或者函数哪里做了修改 需要重新编译成可以执行的文件,并不是说重新跑某个过程。编译完成之后,把编译好了的过程再重新运行。
㈤ 如何将解压后的exe文件重新编译
这是一个自解压文件,用一般的压缩软件就可以重新打包了
㈥ make 重新编译
make clean先
㈦ eclipse 项目中 怎么重新编译整个工程
1、点击选择号重新编译的项目,如下图所示:
㈧ Eclipse怎样重新编译
第一种方法:
1、在您要重新编译的项目上,点击鼠标右键。
2、选择【source】下的【clean up】选项。
3、可以点击【Next】按钮进入到下一步,也可以直接点击【Finish】按钮进行编译。
4、点击【Next】按钮后,显示出您最近修改过的代码,并且提示修改前后的区别。点击【Finish】按钮,进行重新编译。
第二种方法(编译多个项目):
1、选择菜单栏【Project】->【Clean】选项。
2、
(1)根据需要选择
【Clean all projects】重新编译所有项目。
【Clean projects seleted below】重新编译下方选择的项目。
(2)点击【OK】按钮进行编译。
㈨ java class怎么重新编译
方法如下: 点击菜单-Project-Build Automatically,这个勾选上。 Build Automatically 的意思是自动编译,选择的功能就是,你在修改代码保存的时候,就编译了。 点击菜单-Project-Build All或Build Project。
㈩ 怎么重新编译android 下面的动态库
使用动态库来编译动态库
A项目的android.mk文件如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := testa
LOCAL_SRC_FILES := testa.c
include $(BUILD_SHARED_LIBRARY)
生成的libtesta.so加入到E:\workspace\android-ndk-r8e\platforms\android-8\arch-arm\usr\lib\下面
项目B的文件目录结构如下:
jni
jni/jni/
jni/prebuilt/
jni目录下的mk文件如下:
include $(all-subdir-makefiles)
jni/prebuilt目录下的mk文件如下:
LOCAL_PATH := $(call my-dir)
#include $(CLEAR_VARS)
LOCAL_MODULE := libtesta
LOCAL_SRC_FILES := libtesta.so
include $(PREBUILT_SHARED_LIBRARY)
同时把libtesta.so也放入该目录下.
jni/jni目录下的mk文件内容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -ltesta
LOCAL_MODULE := testb
LOCAL_SRC_FILES := testb.c
include $(BUILD_SHARED_LIBRARY)
这样生成libtestb.so文件, 同时eclipse在打包时会把libtesta.so, libtestb.so都加入到apk文件中,如果没有prebuilt那一步,那么在打包时会漏掉libtesta.so, 但编译会通过,因为编译读取的是编译系统的库文件目录(LOCAL_LDLIBS := -ltesta), 这点需要注意
java代码:
System.loadLibrary("testa");
System.loadLibrary("testb");
注意先后关系