当前位置:文档之家› LINUX 下编译jar文件

LINUX 下编译jar文件

LINUX 下编译jar文件
LINUX 下编译jar文件

一、首先是编译简单java文件(不引用外部jar包)如test.java

public class test(){System.out.println("hello world!");}

一个简单的类,看它是如何打包为jar的

1.第一步:先编译

javac test.java // 注意路径

编译后会产生一个test.class 文件

2.第二步:

jar -cvf test.jar test.class

二。如果是要引用外部jar包该如何打包

我以hadoop中的WordCount,java 为例:

可已将指令写成脚本执行:

脚本如下:

#!/bin/bash

HADOOP_VERSION=1.1.2

HADOOP_HOME=/usr/local/hadoop

//hadoop 安装路径

Lib=${HADOOP_HOME}/hadoop-core-${HADOOP-VERSION}.jar // hadoop下的hadoop-core-1.1.2.jar 包路径

mkdir my_wordcount

java c -cp $Lib -d

my_wordcount WordCount.java

//编译WordCount.java 成生class文件放入my_wordcount文件夹

中 $Lib 引用jar包

jar -cvf wordcount.jar

my_wordcount/.

// 用my_wordcount文件下的class文件打包成wordcount.jar

Linux内核修改与编译图文教程

Linux 内核修改与编译图文教程 1

1、实验目的 针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。 2、任务概述 2.1 下载新内核 https://www.doczj.com/doc/974157088.html,/ 2.2 修改新内核系统调用 添加新的系统调用函数,用来判断输入数据的奇偶性。 2.3 进行新内核编译 通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试 3、实验步骤 3.1 准备工作 查看系统先前内核版本: (终端下)使用命令:uname -r 2

3.2 下载最新内核 我这里使用的内核版本是 3.3 解压新版内核 将新版内核复制到“/usr/src”目录下 在终端下用命令:cd /usr/src进入到该文件目录 解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令: bzip2 -d linux-2.6.36.tar.bz2 tar -xvf linux-2.6.36.tar 文件将解压到/usr/src/linux目录中 3

使用命令: ln -s linux-2.6.36 linux 在终端下输入一下命令: sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt 4

linux导出文件到本地

测试环境是linux服务器,所以经常会传输文件到服务器,或者从服务器下载文件。如果服务器安装了FTP,那么直接用FTP软件来下载就可以了,如果没有安装,那么就要用DOS命令来解决了,以下以下载文件到windows本机为例,简单说下整个过程。 一、服务器文件打包 注:因为我经常要下载很多文件,而且文件也比较大,所以需要打包,如果你只是下载单个文件或文件大小不大,那就省略此步吧。 1、本机上打开cmd窗口,用telnet命令登录服务器,具体命令用法是:telnet 服务器IP地址,如要登录的服务器地址是10.10.10.10 ,那么按下图输入 2、回车,输入用户名和密码登录服务器 3、进入要下载的文件或文件夹所在的目录 4、使用tar命令对文件或文件夹打包。 5. 语法:tar命令 一、功能说明:用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件 二、参数: -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。 -z:有gzip属性的

-j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 三、举例说明: tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思 tar -xf all.tar 这条命令是解出all.tar包中所有文件,-t是解开的意思 压缩 tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成jpg.tar tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip 压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2 tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux 解压 tar –xvf file.tar //解压 tar包 tar -xzvf file.tar.gz //解压tar.gz tar -xjvf file.tar.bz2 //解压 tar.bz2 tar –xZvf file.tar.Z //解压tar.Z

linux下编译C语言

GCC 支持了许多不同的语言,包括C、C++、Ada、Fortran、Objective C,Perl、Python 和Ruby,甚至还有Java。 Linux 内核和许多其他自由软件以及开放源码应用程序都是用 C 语言编写并使用GCC 编译的。 编译C++程序: -c 只编译不连接 g++ file1 -c -o file1.o g++ file2 -c -o file2.o g++ file1.o file.o -o exec g++ -c a.cpp 编译 g++ -o a a.o 生成可执行文件 也可以g++ -o a a.cpp直接生成可执行文件。 1. 编译单个源文件 为了进行测试,你可以创建“Hello World”程序: #include #include int main(int argc, char **argv) { printf(“Hello world!n”); exit(0); } 使用如下命令编译并测试这个代码: # gcc -o hello hello.c

# ./hello Hello wordl! 在默认情况下产生的可执行程序名为a.out,但你通常可以通过gcc 的“-o”选项来指定自己的可执行程序名称。 2. 编译多个源文件 源文件message.c包含一个简单的消息打印函数: #include void goodbye_world(void) { printf(“Goodbye, world!n”); } 使用gcc的“-c”标记来编译支持库代码: # gcc -c message.c 这一过程的输出结果是一个名为message.o的文件,它包含适合连接到一个较大程序的已编译目标代码。 创建一个简单的示例程序,它包含一个调用goodbye_world的main函数 #include void goodbye_world(void): int main(int argc, char **argv) { goodbye_world(); exit(0); }

如何自行编译一个Linux内核的详细资料概述

如何自行编译一个Linux内核的详细资料概述 曾经有一段时间,升级Linux 内核让很多用户打心里有所畏惧。在那个时候,升级内核包含了很多步骤,也需要很多时间。现在,内核的安装可以轻易地通过像 apt 这样的包管理器来处理。通过添加特定的仓库,你能很轻易地安装实验版本的或者指定版本的内核(比如针对音频产品的实时内核)。 考虑一下,既然升级内核如此容易,为什么你不愿意自行编译一个呢?这里列举一些可能的原因: 你想要简单了解编译内核的过程 你需要启用或者禁用内核中特定的选项,因为它们没有出现在标准选项里 你想要启用标准内核中可能没有添加的硬件支持 你使用的发行版需要你编译内核 你是一个学生,而编译内核是你的任务 不管出于什么原因,懂得如何编译内核是非常有用的,而且可以被视作一个通行权。当我第一次编译一个新的Linux 内核(那是很久以前了),然后尝试从它启动,我从中(系统马上就崩溃了,然后不断地尝试和失败)感受到一种特定的兴奋。 既然这样,让我们来实验一下编译内核的过程。我将使用Ubuntu 16.04 Server 来进行演示。在运行了一次常规的 sudo apt upgrade 之后,当前安装的内核版本是 4.4.0-121。我想要升级内核版本到 4.17,让我们小心地开始吧。 有一个警告:强烈建议你在虚拟机里实验这个过程。基于虚拟机,你总能创建一个快照,然后轻松地从任何问题中回退出来。不要在产品机器上使用这种方式升级内核,除非你知道你在做什么。 下载内核 我们要做的第一件事是下载内核源码。在 Kernel 找到你要下载的所需内核的URL。找到URL 之后,使用如下命令(我以 4.17 RC2 内核为例)来下载源码文件: wget https://git.kernel/torvalds/t/linux-4.17-rc2.tar.gz

Linux下Makefile简单教程

目录 一:Makefile基本规则 1.1示例 1.2 隐式规则 1.3 伪目标 1.4 搜索源文件 二:变量 2.1使用变量定义变量值 2.2追加变量 三:条件判断 四:函数

Linux下Makefile总结 ——一步 MakeFile可以看做是一种简单的编程语言,其诞生的本质目的是实现自动化编译。 以Linux下gcc-c编译器为例,编译一个c语言程序需要经过以下几个步骤: 1.将c语言源程序预处理,生成.i文件; 2.预处理后的.i语言编译成汇编语言,生成.s文件; 3.汇编语言经过汇编,生成目标文件.o文件; 4.将各个模块的.o文件链接起来,生成一个可执行程序文件。 我们知道,在Visual C++6.0中,可以新建一个工程,在一个工程当中能够包含若干个c语言文件,则编译的时候直接编译整个工程便可。Linux下无法为多个c语言文件新建工程,但可以通过MakeFile实现它们的整合编译。 如上gcc-c编译步骤,如果使用Makefile则过程为: .C文件——>.o文件——>可执行文件 当然,Makefile中也加入了自己的设置变量方法与集成了一些函数,能够更有效地方便用户使用。 /**************************分隔符********************************/

一:Makefile基本规则 1.1示例 target ... : prerequisites ... command ... ... target也就是一个目标文件,可以是Object File,也可以是执行文件。prerequisites就是,要生成那个target所需要的文件或是目标。command也就是make需要执行的命令。(任意的Shell命令) 为了方便理解,我们来看一个示例: /*Makefile示例*/ edit : main.o kbd.o command.o display.o / insert.o search.o files.o utils.o gcc -o edit main.o kbd.o command.o display.o / insert.o search.o files.o utils.o main.o : main.c defs.h #生成main.o gcc -c main.c

嵌入式Linux系统内核的配置、编译和烧写

实验二 嵌入式Linux系统内核的配置、编译和烧写 1.实验目的 1)掌握交叉编译的基本概念; 2)掌握配置和编译嵌入式Linux操作系统内核的方法; 3)掌握嵌入式系统的基本架构。 2.实验环境 1)装有Windows系统的计算机; 2)计算机上装有Linux虚拟机软件; 3)嵌入式系统实验箱及相关软硬件(各种线缆、交叉编译工具链等等)。 3.预备知识 1)嵌入式Linux内核的配置和裁剪方法; 2)交叉编译的基本概念及编译嵌入式Linux内核的方法; 3)嵌入式系统的基本架构。 4.实验内容和步骤 4.1 内核的配置和编译——配置内核的MMC支持 1)由于建立交叉编译器的过程很复杂,且涉及汇编等复杂的指令,在这里 我们提供一个制作好的编译器。建立好交叉编译器之后,我们需要完成 内核的编译,首先我们要有一个完整的Linux内核源文件包,目前流行 的源代码版本有Linux 2.4和Linux 2.6内核,我们使用的是Linux 2.6内核; 2)实验步骤: [1]以root用户登录Linux虚拟机,建立一个自己的工作路径(如用命令 “mkdir ‐p /home/user/build”建立工作路径,以下均采用工作路径 /home/user/build),然后将“cross‐3.3.2.tar.bz2、dma‐linux‐2.6.9.tar.gz、 dma‐rootfs.tar.gz”拷贝到工作路径中(利用Windows与虚拟机Linux 之间的共享目录作为中转),并进入工作目录; [2]解压cross‐3.3.2.tar.bz2到当前路径:“tar ‐jxvf cross‐3.3.2.tar.bz2”; [3]解压完成后,把刚刚解压后在当前路径下生成的“3.3.2”文件夹移 动到“/usr/local/arm/”路径下,如果在“/usr/local/”目录下没有“arm” 文件夹,用户创建即可; [4]解压“dma‐linux‐2.6.9.tar.gz”到当前路径下:

Linux中C语言open函数打开或创建文件详细讲解

Linux中C语言open函数打开或创建文件详细讲解 头文件: #include #include #include 函数原型: int open( const char * pathname, int flags); int open( const char * pathname,int flags, mode_t mode); 作用:以各种方式打开文件 返回值:返回打开的文件句柄,-1打开失败 函数说明参数pathname指向欲打开的文件路径字符串,既可以是相对路径也可以是绝对路径。flags参数有一系列常数值可供选择,可以同时选择多个常数用按位或运算符连接起来,所以这些常数的宏定义都以O_开头,表示or 下列是参数flags所能使用的旗标: 必选项:以下三个常数中必须指定一个,且仅允许指定一个。 O_RDONLY以只读方式打开文件 O_WRONLY以只写方式打开文件 O_RDWR以可读写方式打开文件。上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标利用OR(|)运算符组合。 以下可选项可以同时指定0个或多个,和必选项按位或起来作为flags参数。 O_CREAT若欲打开的文件不存在则自动建立该文件。 O_EXCL如果O_CREAT也被设置,此指令会去检查文件是否存在。文件若不存在则建立该文件,否则将导致打开文件错误。此外,若O_CREAT与O_EXCL同时设置,并且欲打开的文件为符号连接,则会打开文件失败。 O_NOCTTY如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。 O_TRUNC若文件存在并且以可写的方式打开时,此旗标会令文件长度清为0,而原来存于该文件的资料也会消失。 O_APPEND当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方式加入到文件后面。 O_NONBLOCK以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。 O_NDELAY同O_NONBLOCK。 O_SYNC以同步的方式打开文件。

linux、内核源码、内核编译与配置、内核模块开发、内核启动流程

linux、内核源码、内核编译与配置、内核模块开发、内核启动流程(转) linux是如何组成的? 答:linux是由用户空间和内核空间组成的 为什么要划分用户空间和内核空间? 答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的 安全性,比如X86可以有4种模式RING0~RING3 RING0特权模式给LINUX内核空间RING3给用户空间 linux内核是如何组成的? 答:linux内核由SCI(System Call Interface)系统调用接口、PM(Process Management)进程管理、MM(Memory Management)内存管理、Arch、 VFS(Virtual File Systerm)虚拟文件系统、NS(Network Stack)网络协议栈、DD(Device Drivers)设备驱动 linux 内核源代码 linux内核源代码是如何组成或目录结构? 答:arc目录存放一些与CPU体系结构相关的代码其中第个CPU子目录以分解boot,mm,kerner等子目录 block目录部分块设备驱动代码 crypto目录加密、压缩、CRC校验算法 documentation 内核文档 drivers 设备驱动 fs 存放各种文件系统的实现代码 include 内核所需要的头文件。与平台无关的头文件入在include/linux子目录下,与平台相关的头文件则放在相应的子目录中 init 内核初始化代码 ipc 进程间通信的实现代码 kernel Linux大多数关键的核心功能者是在这个目录实现(程序调度,进程控制,模块化) lib 库文件代码 mm 与平台无关的内存管理,与平台相关的放在相应的arch/CPU目录net 各种网络协议的实现代码,注意而不是驱动 samples 内核编程的范例 scripts 配置内核的脚本 security SElinux的模块 sound 音频设备的驱动程序 usr cpip命令实现程序 virt 内核虚拟机 内核配置与编译 一、清除 make clean 删除编译文件但保留配置文件

Eclipse中将Java项目 打包为jar,并且引入第三方jar包 解决办法

如果自己的java project中需要引用额外的jar包作为资源文件,那么需要自定义配置文件MANIFEST.MF ,例如: Manifest-Version: 1.0 Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jar lib\log4j-1.2.13.j ar lib\mysql-connector-java-3.1.13-bin.jar Main-Class: src.YourMainClassName 其中的Class-Path就指定了外来jar包的位置。请注意假设我们的项目打包后为pr oject.jar,那么按照上面的定义,应该在 project.jar的同层目录下建立一个lib 文件夹,并将相关的jar包放在里面。否则将会出现Exception in thread "main" https://www.doczj.com/doc/974157088.html,ng.NoClassDefFoundError的错误。 注意:如果在Class-Path 中引入比较多的jar包,不要写成一行,不然会报:java. io.IOException : line too long ,需要分多行写,第二行以及下面的第三行、第四行写的时候需要在前面空两格(敲两下空格键)即可 最后介绍一下使用Eclipse制作jar包的过程吧: 1. 首先在Eclipse中打开项目,右键点击项目,选择“Export”; 2. 选择Java/JAR file,Next; 3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间; 这里有几个选项: * Export generated class files and resources 表示只导出生成的.clas s文件和其他资源文件 * Export all output folders for checked projects 表示导出选中项目 的所有文件夹 * Export java source file and resouces 表示导出的jar包中将包含你 的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了 * Export refactorings for checked projects 把一些重构的信息文件也 包含进去 在Select the export destination中选择导出的jar的路径,Next 4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class文件。一般不用理他,Next 5. 下一个页面里可以对项目做一些配置。 * Generate the manifest file是系统帮我们自动生成MANIFEST.MF文件,

【IT专家】linux下打开chm格式文件

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 linux下打开chm格式文件 首先我们安装一个打开chm文件的软件,这个软件叫chmsee. 在终端下运行:sudo apt-get install chmsee 安装完成后有可能还是打不开,这可能是系统升级时,如果xulrunner版本有变化,同样会导致chmsee无法运行,,查看/usr/lib中的xulrunner的版本(注:我的xulrunner的版本号为xulrunner-1.9)。然后建立下面四个链接:cd /usr/lib sudo ln -s xulrunner-1.9/libxul.so libxul.so sudo ln -s xulrunner-1.9/libxpcom.so libxpcom.so sudo ln -s xulrunner-1.9/libsqlite3.so libsqlite3.so sudo ln -s xulrunner-1.9/libmozjs.so libmozjs.so 如果还是有问题的话,可以试着把这四个链接删除掉然后再建立。其中删除链接的命令为:cd /usr/lib sudo rm libxul.so sudo rm libxpcom.so sudo rm libsqlite3.so sudo rm libmozjs.so ? ?在linux下打开chm格式文件的方式有多种,如:chmsee,chm-vewer等,但这些软件的安装要很多的依赖包,安装起来太烦,现在我向大家介绍一下firefox的chmreader插件,可通过fireforx打开chm文件,安装与使用都很方便。 ?1、从sourceforge/projects/chmreader下载chmreader. 2、从firefox中打开下载的xpi文件. 3、重新启动firefox就安装了chmreader插件. 4、打开chm文件(通过file中的open CHM files) 我打开chm文件的图:devhelp/htmlhelp/winhlp 帮助文件chm查看工具chm相关工具DevHelp/HtmlHelp/WinHelp帮助文件htmlhelp.berlios.de/ This project aims to provide: available reference documentation of open-source software in convienient HTML-based formats, such as Windows Compiled HTML Help (CHM) to provide the necessary tools for the generation of such books from the source documentation formats (may they be Texinfo, DocBook, LaTex, etc.), conversion among the diferent formats webserver based visualization (by hosting several books using MYSQL together with PHP or Python CGI scripts) platform-indenpendent GUI visualization tools perhaps a canonic XML based HTML help format LIDN: Linux Developer Network 这个站点有很多DevHelp书库。DevHelp是GNOME

怎样执行在Linux上运行应用程序

如何执行在Linux上运行的应用程序 关键字:Linux 先决条件 要充分理解本文,必须具备Windows 环境下桌面应用程序的工作经验,我认为读者对如何使用Linux 桌面有一个基本的了解。使用一个运行的Linux 计算来机探讨本文的概念和示例是很有帮助的。 概述 有时候第一次在Linux 上运行一个应用程序需要一点额外工作。有些应用程序,比如服务器服务,可能无法安装为服务,因此您需要从命令行启动这些应用程序。对于启动这些应用程序的用户帐户而言,需要在应用程序文件中设置执行许可标志(x)。 运行用户空间应用程序 Linux 在内核空间或用户空间运行进程。用户空间是操作系统的区域,应用程序通常在此运行。简单地说,每个用户帐户有其自己的用户空间,应用程序在这个领域内运行。 默认情况下,只有root 用户有权访问内核空间。root 用户是Linux 中的超级用户,相当于Windows 中的管理员帐户。在root 用户帐户下运行应用程序可能会引起安全风险,是不可取的。 很多服务器服务需要root 权限启动服务。然而,服务启动后,root 帐户通常会将其移至服务帐户。严格地说,Linux 中的服务帐户才是标准的用户帐户。主要区别是服务帐户仅用于运行一个服务,而不是为任何实际登录的用户准备的。 设置权限 您可以使用chmod 命令在一个文件中设置执行权限。在Linux 中,umask 设置通常用来防止下载的文件被执行,也有充分的理由相信,因为它有助于维护Linux 计算机的安全性。 大多数Linux 发行版具有一个值为022 的umask 设置,这意味着,默认情况下一个新文件权限设置为644.权限的数字表示形式采用读(4)、写(2)、执行(1) 的格式。因此,默认权限为644 的应用程序下载意味着文件所有者有读写权限,而组用户和其他用户只有读权限。 例如,为每个人赋予一个文件的执行权限,使用chmod a+x 命令。a 表示所有人,加号(+) 表示添加,而x 表示执行。同样地,如果应用程序是一个服务器服务,您应该确保只有授权帐户才有权执行此服务。 如果一个应用程序能够在标准用户帐户权限下运行,但只有特定组中的用户才需要使用它,您可以将该组所有者权限设置为可执行,然后将这些用户添加到该组中。 更具体地说,您可以在一个可执行文件中设置访问控制列表(ACL) 权限,赋予特定用户或组权限来运行该应用程序。使用setfacl 实用工具设置ACL 权限。 对于这些需要以root 用户启动进程的应用程序,比如服务器服务,您有几个选择。总结了允许用户执行需要root 权限的服务器服务的各种选项。 选项描述 作为root 用户不推荐用于服务器服务。当用户已经知道root 密码而且应用程序泄露不是首要关注问题时,可用于应用程序。 SetUID 由于安全问题,不推荐使用。SetUID 允许标准用户以另一个用户方式,比如root 用户,执行一个文件。 sudo 很常用,并且被认为是一个很好的实践。sudo 授予一个用户或组成员权限以执行可能额外需要root 权限的文件。该用户不需要知道root 密码。 带有文件权限的标准用户帐户在一个文件上为用户所有者、组所有者或其他人(所有人)

linux内核编译和生成makefile文件实验报告

操作系统实验报告 姓名:学号: 一、实验题目 1.编译linux内核 2.使用autoconf和automake工具为project工程自动生成Makefile,并测试 3.在内核中添加一个模块 二、实验目的 1.了解一些命令提示符,也里了解一些linux系统的操作。 2.练习使用autoconf和automake工具自动生成Makefile,使同学们了解Makefile的生成原理,熟悉linux编程开发环境 三、实验要求 1使用静态库编译链接swap.c,同时使用动态库编译链接myadd.c。可运行程序生成在src/main目录下。 2要求独立完成,按时提交 四、设计思路和流程图(如:包括主要数据结构及其说明、测试数据的设计及测试结果分析) 1.Makefile的流程图: 2.内核的编译基本操作 1.在ubuntu环境下获取内核源码 2.解压内核源码用命令符:tar xvf linux- 3.18.12.tar.xz 3.配置内核特性:make allnoconfig 4.编译内核:make 5.安装内核:make install

6.测试:cat/boot/grub/grub.conf 7.重启系统:sudo reboot,看是否成功的安装上了内核 8.详情及结构见附录 3.生成makefile文件: 1.用老师给的projec里的main.c函数。 2.需要使用automake和autoconf两个工具,所以用命令符:sudo apt-get install autoconf 进行安装。 3.进入主函数所在目录执行命令:autoscan,这时会在目录下生成两个文件 autoscan.log和configure.scan,将configure.Scan改名为configure.ac,同时用gedit打开,打开后文件修改后的如下: # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE(main,1.0) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT(Makefile) 4.新建Makefile文件,如下: AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=main first_SOURCES=main.c 5.运行命令aclocal 命令成功之后,在目录下会产生aclocal.m4和autom4te.cache两个文件。 6.运行命令autoheader 命令成功之后,会在目录下产生config.h.in这个新文件。 7.运行命令autoconf 命令成功之后,会在目录下产生configure这个新文件。 8.运行命令automake --add-missing输出结果为: Configure.ac:11:installing./compile’ Configure.ac:8:installing ‘.install-sh’ Configure.ac:8:installing ‘./missing’ Makefile.am:installing ‘./decomp’ 9. 命令成功之后,会在目录下产生depcomp,install-sh和missing这三个新文件和执行下一步的Makefile.in文件。 10.运行命令./configure就可以自动生成Makefile。 4.添加内核模块

Linux新建文件命令

Linux新建文件命令 一、t ouch命令。 touch命令用来修改文件的访问时间、修改时间。如果没有指定时间,则将文件时间属性改为当前时间。当指定文件不存在,则touch命令变为创建该文件。 语法: 选项介绍: -a: 只修改访问时间; -c: 如果指定文件不存在,则不创建文件; -d STRING-time: 用字符串格式的时间来指定时间属性的修改值; -m: 只修改指定文件的修改时间; -r refernce-file: 将指定文件的时间属性改为与reference-file时间属性相同的值; -t [[CC]YY]MMDDhhmm[.ss]: 用[[CC]YY]MMDDhhmm[.ss]这种时间格式来指定时间属性的修改值; 执行范例: $ ls #查看当前空的目录 $ touch text #指定文件不存在,创建文件text $ stat text # stat命令可能查看文件的时间属性。 File: `text' Size: 0 Blocks: 8 IO Block: 4096 regular empty file Device: 831h/2097d Inode: 211271681 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 514/ xxxx) Gid: ( 100/ users) Access: 2010-03-01 22:03:30.000000000 +0800 Modify: 2010-03-01 22:03:30.000000000 +0800

Change: 2010-03-01 22:03:30.000000000 +0800 $ cat text # 读文件 $ stat text # 发现文件的访问时间(Access)改变 File: `text' Size: 0 Blocks: 8 IO Block: 4096 regular empty file Device: 831h/2097d Inode: 211271681 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 514/ xxxx) Gid: ( 100/ users) Access: 2010-03-01 22:04:08.000000000 +0800 Modify: 2010-03-01 22:03:30.000000000 +0800 Change: 2010-03-01 22:03:30.000000000 +0800 $ echo "hello world" > text # 相当于写文件 $ stat text # 发现文件的修改时间(Modify)改变 File: `text' Size: 12 Blocks: 16 IO Block: 4096 regular file Device: 831h/2097d Inode: 211271681 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 514/ xxxx) Gid: ( 100/ users) Access: 2010-03-01 22:04:08.000000000 +0800 Modify: 2010-03-01 22:04:58.000000000 +0800 Change: 2010-03-01 22:04:58.000000000 +0800 $ touch text #将文件的访问时间、修改时间改为当前时间 $ stat text File: `text' Size: 12 Blocks: 16 IO Block: 4096 regular file

怎么在linux操作系统上安装可执行的软件

仅以RedHat Linux 为参照,包括但不限于其他版本的Linux都要遵循此方法,以下是说明: 先来看看Linux软件扩展名。软件后缀为.rpm最初是Red Hat Linux提供的一种包封装格式,现在许多Linux发行版本都使用;后缀为.deb是Debain Linux 提供的一种包封装格式;后缀为.tar.gz、tar.Z、tar.bz2或.tgz是使用Unix 系统打包工具tar打包的;后缀为.bin的一般是一些商业软件。通过扩展名可以了解软件格式,进而了解软件安装。 RPM格式软件包的安装 1.简介 几乎所有的Linux发行版本都使用某种形式的软件包管理安装、更新和卸载软件。与直接从源代码安装相比,软件包管理易于安装和卸载;易于更新已安装的软件包;易于保护配置文件;易于跟踪已安装文件。 RPM全称是Red Hat Package Manager(Red Hat包管理器)。RPM本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的Linux软件。RPM 示意图见图1。 大多数Linux RPM软件包的命名有一定的规律,它遵循名称-版本-修正版-类型-MYsoftware-1.2 -1.i386.rpm 。 2.安装RPM包软件 #rpm -ivh MYsoftware-1.2 -1.i386.rpm RPM命令主要参数: -i 安装软件。 -t 测试安装,不是真的安装。 -p 显示安装进度。 -f 忽略任何错误。 -U 升级安装。 -v 检测套件是否正确安装。 3.卸载软件 #rpm -e 软件名 需要说明的是,上面代码中使用的是软件名,而不是软件包名。例如,要卸载software-1.2.-1.i386.rpm这个包时,应执行: #rpm -e software 4.强行卸载RPM包

Java程序打成Jar包做成EXE安装程序(2)

J a v a程序完成以后,对于W i n d o w s操作系统,习惯总是想双击某个e x e文件就可以直接运行程序,现我将一步一步的实现该过程.最 终结果是:不用安装J R E环境,不用安装数据库,直接双击一个e x e 文件,就可以运行程序. 下面我将以我最近写的一个程序作例子,进行该打包过程. 该程序是使用了:H i b e r n a t e,S p r i n g,D e r b y的J a v a G U I.(J D K 需要1.6版本,因该版本才有D e r b y),我使用的是E c l i p s e进行开发. 第一步:完成J a v a G U I程序 在E c l i p s e下,程序能够正常运行. 第二步:准备清单文件(M A N I F E S T.M F) 方法1:直接拷贝其它能运行的J A R文件中的M A N I F E S T.M F 进行修改 方法2:利用I D E工具,如E c l i p s e在生成J A R文件时自动生成 M A N I F E S T.M F内容如下: M a n i f e s t-V e r s i o n: 1.0 M a i n-C l a s s:m a n a g e r.u i.M a i n F r a m e C l a s s-P a t h: ./l i b/s p r i n g.j a r ./l i b/h i b e r n a t e.j a r ./l i b/d e r b y.j a r S p l a s h S c r e e n-I m a g e r: m a n a g e r/r e s o u r c e s/i m a g e s/s p l a s h.j p g 说明: M a n i f e s t-V e r s i o n-指定清单文件的版本号 M a i n-C l a s s-指定程序运行的入口类。注意:类名后不要加c l a s s扩展名 C l a s s-P a t h-指定支持库的路径。“.”指程序运行目录,即导出的J A R包所在目录。程序运行时依据C l a s s-P a t h项的设置路径来查找支持库。每一个支持库之间用空格隔开。在这里使用了 h i b e r n a t e,s p r i n g,d e r b y. 注意:

linux系统调用和文件操作

零、本课程能学到的内容 1、文件系统及文件的IO操作。 2、linux的多进程编程。 3、linux的多线程编程。 4、进程及线程之间的同步和异步通信 5、linux的网络编程(编写服务器、客户端、TCP、UDP程序)。 一、linux的系统调用 用户程序通过软中断的方式,让cpu切换到内核态运行,数据就借此传输。 对于CPU来说,它不知道现在运行是用户程序还是内核程序。软中断后,cpu根据拿到的数据,进行特定的任务,然后退出中断,将任务的结果交回给用户程序。 这个任务如何描述?是通过数字来编号的。 例子:写一个打印字符串的程序,通过系统调用来完成。 需要传递的参数有:指向字符串的指针(字符串的首地址),字符串的长度。 汇编写法 用int$0x80产生软中断 C的写法 直接使用syscall函数(它的本质就是用软中断来产生系统调用) 系统调用编号见:/usr/include/asm/unistd_32.h里 一共有358个。其中,4号对应的write调用。 二、linux文件系统基础 扇区(sector):磁头读取的最小单位数据,在磁盘上类似一个扇子的形状。一般是512个字节。 块(block):软件读取磁盘的最小单位数据,一般来说是扇区的2的n次幂大小,常用的有4096个字节。 块就是文件存放的最小单位。如果有一个文件是15045个字节,那么就分成4个块存储,最后那个块的数据是不满的。 可以用数组的方式将一个文件的所有数据块的编号保存起来。

这个数组多大合适? 前提是数组大小要固定,才好管理。 用一个15元素的数组来保存数据块的编号。 其中0-11元素,保存数据块的前面12个,第12个元素是一个一级指针,指向另一个表格,那个表格是4096字节,可以保存1024个块的编号。 如果还不够,第13个元素是一个二级指针,指向的那个表格是一级指针表格。14个元素是三级指针,指向的表格是二级指针表格。 全部用完可以存储2G大小的文件的数据块编号。 在文件系统内部,如何来表示一个文件呢? 用一个inode结构体来表示一个文件。inode是index node的意思。也叫索引节点。一个索引节点对应一个文件,有多少个文件就有多少个索引节点。 inode结构体里面有文件的大小、文件的修改时间、文件的权限、文件的数据块的编号数组。 inode结构体数组保存了所有文件的inode,这个数组的下标就是inode编号。文件名或者目录名保存目录文件的数据块里面。在linux里面,一个目录也是一个文件,叫做目录文件,其它的叫做普通文件。目录文件里就有,inode编号和文件名的对应关系。 那么,给出文件路径时,如何找到这个文件的数据块? /usr/include/stdio.h 首先,找到根目录的数据块,从里面找到文件和inode编号关系表, 例如usr这个文件名和inode编号为10002是对应的,那么就到inode结构体数组里找出下标为10002的元素,得到对应文件usr的数据块,因为usr也是一个文件夹,既然是文件夹,它的数据块里面也会有关系表,就可以找到include这个文件的数据块,最后找到stdio.h的数据块,这个是一个普通文件,就把它的数据块全部取出来。 这里搜索的起点是根目录的数据块,那么这个文件的数据块到哪里找? 在一个磁盘里面,最开始的几个块,存储了本磁盘的很多重要数据,例如块的大小,有哪些inode下标空闲,哪些已经用了,最重要的是根目录的数据块。 所有的参数存放在其中的一个块,这个块叫做超级块(super block)。在磁盘格式化,实际就是生成一个超级块。这个块的重要性毋庸置疑,如果数据被损坏,则磁盘没办法使用。 三、打开文件 在linux里面,用open函数就可以打开一个文件。 函数原型:int open(const char*path,int flag) 函数如果打开成功,则返回一个文件描述符f ile d escribtor,这个描述符fd是一个非负整数。 1、文件描述符

相关主题
文本预览
相关文档 最新文档