編輯:關於Android編程
makefile的作用:
1、工程文件組織,編譯成復雜的程序
2、安裝及卸載我們的程序
在/home/username/makefile目錄下有如下三個文件:
main.c
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD48cHJlIGNsYXNzPQ=="brush:java;">#include 寫好的Makefile文件如下: Makefile由若干條上面的規則構成,每個規則如下: taget目標:prequisites(依賴) command(命令) 注意:第二行必須有一個Tab縮進 例如上面兩行表示要生成目標文件hello,在生成hello的同時需要依賴main.o func1.o func2.o這三個文件,並且執行gcc main.o func1.o func2.o -o hello命令來生成。#include
func2.c#include
下面我們開始編譯上面的文件:obj=main.c func1.c func2.c
hello2:$(obj)
gcc $^ -o $@
.PHONY:clean
clean:
rm hello2
install:
cp hello2 /usr/local
運行makeMakefile的編寫規則
#建立第一個Makefile文件
hello:main.c func1.c func2.c
gcc main.c func1.c func2.c -o hello
我們來修改一下上面的Makefile#建立第二個Makefile文件
hello:main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
main.o:main.c
gcc -c main.c
func1.o:func1.c
gcc -c func1.c
func2.o:func2.c
gcc -c func2.c
seo8L3A+PHA+PHByZSBjbGFzcz0="brush:java;">hello:main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
main.o:main.c
gcc -c main.c
func1.o:func1.c
gcc -c func1.c
func2.o:func2.c
gcc -c func2.c
clean:
rm func1.o func2.o main.oclean就是一個偽目標,不會生成新的文件,下面我們來執行一下make clean來看一下效果
執行make clean後func1.o func2.o main.o全部刪除了(可以想到卸載程序的原理),下面我們就來添加一個install和uninstall偽目標
在我們執行make install的時候會將我們用到的執行文件和庫文件拷貝到指定目錄,在執行uninstall的時候會刪除安裝時的拷貝文件。
下面我們來使用變量MObj代替main.o func1.o func2.o
MObj = main.o func1.o func2.o hello:$(MObj) gcc $(MObj) -o hello main.o:main.c gcc -c main.c func1.o:func1.c gcc -c func1.c func2.o:func2.c gcc -c func2.c clean: rm $(MObj) install: cp hello /usr/local/hello uninstall: rm /usr/local/hello如果這樣寫MObj := main.o func1.o func2.o 表示不遞歸變量。也可以使用系統的預定義變量,常見的預定義變量如下:
AR_____庫文件維護程序的名稱,默認值為ar
AS_____匯編程序的名稱,默認值為as
CC_____C編譯器的名稱,默認值為cc
CXX____C++編譯器的名稱,默認值為g++
ARFLAGS_____庫文件維護程序選項,無默認值
ASFLAGS_____匯編程序選項,無默認值
CFLAGS______C編譯器選項,無默認值
CXXFLAGS____C++編譯器選項,無默認值
下面我們使用預定義變量來改寫一下我們上面的Makefile文件
這樣做的好處就是在我們換編譯器的時候非常方便。
下面我們來看看makefile中的自動變量及環境變量:
$*_______不包含擴展名的目標文件名稱
$<_______第一個依賴文件名稱
$?_______所有時間戳比目標文件晚的依賴文件
$@______目標文件完整名稱
$^_______所有不重復的依賴文件
這個時候我們應該清楚了剛開始寫的那個Makefile文件的內容了
上面還對偽目標進行了聲明(.PHONY)這樣做的目的是為了避免和其他文件同名沖突。
概述本篇博文主要介紹的是Android中的Java服務。這部分服務大部分都有一個Manager類,其實就是一個RPC調用,用戶通過調用xxxManager的方法,實際上被
一個安卓開發的朋友發我一個視頻並向詢問我視頻中效果怎麼實現,我當即給他說 ,這個簡單,用幀動畫就可以實現。然後就被他pass掉了,於是我只好祭出plan B。但是我當時沒
簡介 引入OpenCV4Android的目標是在Raknet框架下解決視頻通訊的問題,目前在ubuntu下已成功實現,現在把它引用到Android平台下。 OpenCV是
在listview中,每個條目有一張圖片,圖片的大小是隨機的,怎麼展示才能美觀。很多人用的方法是,在ImageView中,加屬性 android:adjustVi