linux命令make(linux 命令make)

linux命令make(linux

linux加载驱动的两种makefile文件?

二 Makefile文件有两种写法:

一种是:

# Add your debugging flag (or not) to CFLAGS

ifneq ($(KERNELRELEASE),)

obj-m := boot.o

else

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

default:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

另外一种是:

# Add your debugging flag (or not) to CFLAGS

ifneq ($(KERNELRELEASE),)

obj-m := boot.o

else

KERNELDIR ?= /usr/src/linux-headers-2.6.38-8-generic

PWD := $(shell pwd)

default:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

比较两者可以发现,该两个Makefi二 Makefile文件有两种写法:

一种是:

# Add your debugging flag (or not) to CFLAGS

ifneq ($(KERNELRELEASE),)

obj-m := boot.o

else

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

default:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

另外一种是:

# Add your debugging flag (or not) to CFLAGS

ifneq ($(KERNELRELEASE),)

obj-m := boot.o

else

KERNELDIR ?= /usr/src/linux-headers-2.6.38-8-generic

PWD := $(shell pwd)

default:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

比较两者可以发现,该两个Makefi二 Makefile文件有两种写法:

一种是:

# Add your debugging flag (or not) to CFLAGS

ifneq ($(KERNELRELEASE),)

obj-m := boot.o

else

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

default:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

另外一种是:

# Add your debugging flag (or not) to CFLAGS

ifneq ($(KERNELRELEASE),)

obj-m := boot.o

else

KERNELDIR ?= /usr/src/linux-headers-2.6.38-8-generic

PWD := $(shell pwd)

default:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

比较两者可以发现,该两个Makefile的唯一差别是KERNELDIR的不同,

le的唯一差别是KERNELDIR的不同,

le的唯一差别是KERNELDIR的不同,

如何使用CMAKE生成makefile文件?

  CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 linux 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。

  在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:

  编写 CmakeLists.txt。

  执行命令 “cmake PATH” 或者 “ccmake PATH” 生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。

  使用 make 命令进行编译

  工程实例:

  一. 编写各层CMakeLists.txt

  主目录的主程序main.cpp

  #include “hello.h”

  extern Hello hello;

  int main()

  {

  hello.Print();

  return 0;

  }

  主目录的CMakeLists.txt

  # to the root binary directory of the project as ${MAIN_BINARY_DIR}.

  project (MAIN)

  #version support

  cmake_minimum_required(VERSION 2.8)

  # Recurse into the “Hello” and “Demo” subdirectories. This does not actually

  # cause another cmake executable to run. The same process will walk through

  # the project’s entire directory structure.

  add_subdirectory (Hello)

  add_subdirectory (Demo)

  # Make sure the compiler can find include files from our Hello library.

  include_directories (${MAIN_SOURCE_DIR}/Hello)

  # Make sure the linker can find the Hello Demo library once it is built.

  link_directories (${HELLO_BINARY_DIR}/Hello)

  link_directories (${HELLO_BINARY_DIR}/Demo)

  #define the source coedes of current directory as DIR_SRCS

  AUX_SOURCE_DIRECTORY(. DIR_SRCS)

  # Add executable called “MAIN” that is built from the source files

  add_executable (Main ${DIR_SRCS})

  # Link the executable to the Hello Demo library.

  target_link_libraries (Main Hello Demo)

  定义项目名project(MAIN),使得当前目录可以用${MAIN_SOURCE_DIR},由于有2个子目录,所以需要add_subdirectory它们。由于主程序会使用到其他库,因而也需要指定连接库所在目录。

  主目录下的作用是利用add_executable将当前目录下的源文件编译成Main程序,然后通过target_link_libraries链接Hello和Demo库。由于主程序文件使用了hello.h文件,所以要include_directories该目录。

  —————————————————————————————————

  子目录Demo的子程序demo.c

  #include “hello.h”

  Hello hello;

  子目录Demo的CMakeLists.txt

  # Make sure the compiler can find include files from our Hello library.

  include_directories (${MAIN_SOURCE_DIR}/Hello)

  #define the source coedes of current directory as DIR_DEMO_SRCS

  AUX_SOURCE_DIRECTORY(. DIR_DEMO_SRCS)

  # Add library called “Demo” that is built from the source files

  add_library (Demo ${DIR_DEMO_SRCS})

  Demo目录下的CMakeLists主要作用是利用add_library将当前目录源码编译成Demo库,由于该库使用到hello.h文件,所以要include_directories该目录。

  —————————————————————————————————

  子目录Hello的子程序hello.h

  #ifndef _hello_h

  #define _hello_h

  class Hello

  {

  public:

  void Print();

  };

  #endif

  子目录Hello的子程序hello.c

  #include “hello.h”

  #include

  void Hello::Print()

  {

  printf(“Hello, World!n”);

  }

  子目录Hello的CMakeLists.txt

  #define the source coedes of current directory as DIR_HELLO_SRCS

  AUX_SOURCE_DIRECTORY(. DIR_HELLO_SRCS)

  # Add library called “hello” that is built from the source files

  add_library (Hello ${DIR_HELLO_SRCS})

  Hello目录下的CMakeLists主要作用是利用add_library将当前目录源码编译成Hello库。

  —————————————————————————————————

  二. 执行cmake命令

  至此我们完成了项目中所有 CMakeLists.txt 文件的编写,进入目录 step2 中依次执行命令

  #cmake .

  默认当前目录,生产makefile

  #make

  最后编译程序

linux编译器头文件配置?

-I /usr/src/linux-headers-2.6.32-24/include 其中, -I和后面的路径没有空格 -I/usr/src/linux-headers-2.6.32-24/include 一般也很少直接用gcc命令, 大部分是用makefile, make -C kernel_path modules

yummakecache是什么?

yum 是 Fedora RHEL Centos SUSE等linux 发行版的 软件包管理工具通过 执行 man yum 查看yum的帮助信息 可以知道yum makecache 是 将服务器上的软件包信息 现在本地缓存,以提高 搜索 安装软件的速度yum 主要的一下命令如下:yum search 软件包 搜索软件包yum install 软件包 安装软件包yum remove 软件包yum update 更新系统等等

LINUX下安装软件方法命令方法?

LINUX下安装软件包常有三种,不同的软件包有不同的安装方法: tar包,整个安装过程可以分为以下几步:

1) 取得应用软件:通过下载、购买光盘的方法获得;

2) 解压缩文件:一般tar包,都会再做一次压缩,如gzip、bz2等,所以你需要先解压。如果是最常见的gz格式,则可以执行:“tar –xvzf软件包名”,就可以一步完成解压与解包工作。如果不是,则先用解压软件,再执行“tar –xvf 解压后的tar包”进行解包; 阅读附带的INSTALL文件、README文件;

3) 执行“./configure”命令为编译做好准备;

4) 执行“make”命令进行软件编译;

5) 执行“makeinstall”完成安装;

6) 执行“makeclean”删除安装时产生的临时文件。

7) 运行应用程序:一般来说,Linux的应用软件的可执行文件会存放在/usr/local/bin目录下!不过这并不是“放四海皆准”的真理,最可靠的还是看这个软件的 INSTALL和README文件,一般都会有说明。

8) 卸载:通常软件的开发者很少考虑到如何卸载自己的软件,而tar又仅是完成打包的工作,所以并没有提供良好的卸载方法。有两个软件能够解决这个问题,那就是Kinstall和Kife,它们是tar包安装、卸载的黄金搭档 rpm包,安装过程如下: 1) 操作系统:RedHat(Red Hat/Fedora) 2) 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数” 3) 包管理工具 yum 4) 支持tar包 5)1rpm命令:安装: rpm –ivh 软件包名.rpm( -I 安装软件,-t测试安装,不是真的安装,-p显示安装进度,-f忽略任何错误,-U升级安装,-v检测套件是否正确安装) 卸载: rpm –e 软件名(注意使用的是软件名,而不是软件包名) 查询:查询当前系统安装的软件包: rpm –qa ‘*软件包名*’ deb包,安装过程: 1) 操作系统:Debian系列(Ubuntu) 2) 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数” 3) 包管理工具apt-get 4) 支持tar包 5)dpkg命令:安装: dpkg –i 软件包名.deb, 卸载: dpkg –e 软件名,查询:查询当前系统安装的软件包: dpkg –l ‘*软件包名*’

Published by

风君子

独自遨游何稽首 揭天掀地慰生平