[root@localhost home]# vi hello.c
內容如下:
#include"hello.h"
int main()
[root@localhost home]# vi hello.h
內容如下:
#include
命令:
[root@localhost home]# mkdir auto
命令:
[root@localhost home]# cp hello.* ./auto
命令:
[root@localhost home]# cd auto
[root@localhost auto]# autoscan
此時生成了2個檔案 ,分別是 autoscan.log configure.scan
autoscan會在給定的目錄及其子目錄樹中檢查原始檔,若沒有給出目錄,就在當前目錄及其子目錄樹中進行檢查。它會搜尋原始檔以尋找一般的移植性問題並建立乙個檔案configure.scan
命令:
[root@localhost auto]# vi configure.scan
修改內容如下:
# -*- autoconf -*-
# process this file with autoconf to produce a configure script.
ac_prereq(2.57)
ac_init(hello,1.0)
ac_init(full-package-name, version, bug-report-address)
am_init_automake
ac_prog_ranlib 這兩行需要手動新增
ac_config_srcdir([hello.c])
am_config_header([config.h])
# 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_config_files([makefile])--------------------指定生成makefile。如果沒有該行,請手動新增。
ac_prereq巨集宣告本檔案要求的autoconf版本,本例使用的版本為2.57
ac_init巨集用來定義軟體的名稱和版本等資訊
am_init_automake是筆者另加的,它是automake所必備的巨集。
ac_config_srcdir巨集用來偵測所指定的原始碼檔案是否存在,來確定原始碼目錄的有效性,在此處為當前目錄下的hello.c
ac_config_header巨集用於生成config.h檔案,以便autoheader使用。
命令:
[root@localhost auto]# aclocal
生成檔案aclocal.m4,該檔案主要處理本地的巨集定義。
命令:
[root@localhost auto]# autoconf
生成2個檔案:分別為autom4te.cache configure
命令:
[root@localhost auto]# autoheader
生成config.h.in
[root@localhost auto]# vi makefile.am
內容如下:
automake_options=foreign
bin_programs=hello
hello_sources=hello.c hello.h
命令:
[root@localhost auto]# automake --add-missing
可以讓automake自動新增一些必需的指令碼檔案。
生成configure depcomp install-sh missing mkinstalldirs
命令:
[root@localhost auto]# ./configure
顯示內容如下
[root@localhost auto]# ./configure
checking for a bsd-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(make)... yes
checking for ranlib... ranlib
checking for gcc... gcc
checking for c compiler default output file name... a.out
checking whether the c compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the gnu c compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept iso c89... none needed
checking for style of include used by make... gnu
checking dependency style of gcc... gcc3
configure: creating ./config.status
config.status: creating makefile------------------------如果沒有該行請檢查configure.in檔案是否存在ac_config_files([makefile])
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
命令:
[root@localhost auto]# make
命令:
[root@localhost auto]# ./hello
顯示結果如下:
hello world!
命令:
[root@localhost auto]# make install
把程式安裝到系統目錄下。
[root@localhost auto]# hello
hello world!
命令:
[root@localhost auto]# make dist 打包
命令:
[root@localhost auto]# make clean
顯示如下:
test -z "hello" || rm -f hello
rm -f *.o core *.core
此時.o檔案及可執行檔案都會刪除,也就是說hello及hello.o檔案都刪除了。
以上的的編譯檔案是屬於上層的編譯條件,不能作為核心模組的編譯,也就是編譯成.o檔案,不能再原始碼中使用核心函式。一般對驅動沒作用。
另外一種編譯方式: 屬於核心級的編譯,編譯成.ko檔案
1. 把test.c檔案放到ylp2440的根目錄下,(和板子裡用的核心相同的核心版本),ylp2440是這個核心再pc中的檔案目錄2. 然後修改ylp2440根目錄的makefile檔案,在頭部新增如下**:
obj-m := test.o //選擇編譯成核心模組
kerneldir := /root/test/ylp2440 //你的核心絕對路徑
pwd := $(shell pwd)
modules:
$(make) -c $(kerneldir) m=$(pwd) modules
modules_install:
$(make) -c $(kerneldir) m=$(pwd) modules_install
上述**中,modules和modules_install為什麼要取這個名字我也不知道,另一種**寫法是這樣的:
obj-m := test.o
kerneldir := /root/test/ylp2440
pwd := $(shell pwd)
default:
$(make) -c $(kdir) subdirs=$(pwd) modules
還有另外一種方式,就是參照driver中的kconfg 和 makefile 來增加編譯條件。
為核心增加新原始碼目錄編譯配置
開始著手學習arm linux知識了,為了自己的學習和實踐 和核心源生 實現分離和解耦,決定在核心的根目錄新增乙個自己的原始碼目錄,配置並編譯進核心。一 新增配置選項及編譯指令碼 1 新增根目錄的配置選項 修改檔案 arch arm kconfig 在 menu system type 之前新增專案...
2013 5月更新原始碼 標註一下!
vs201 2 功能介紹 實現了笑話分類展示,詳細笑話展示的功能,只有展示功能,適合win8應用初學者學習。a34 企業 原始碼 2013 5 24 vs201 0康軟人力資源管理系統原始碼 2013 5 24 vs201 0 原始碼描述 康軟企業人力資源管理系統是乙個典型的資訊管理系統,本系統是為...
linux下MySql原始碼安裝
linux下mysql原始碼安裝 以下只是簡單的安裝,如果你要是搭建lamp平台的話,還要在編譯的時候加入一些引數。groupadd mysql useradd g mysql mysql tar zxvf mysql tar.gz cd mysql configure prefix usr loc...