當前位置:首頁 » 編程軟體 » linuxmk編譯

linuxmk編譯

發布時間: 2022-04-30 20:33:22

linux下NDK編譯出的SO庫能在WIndows下的android工程直接使用么

是在windows下做開發的,但是編譯環境還是在linux上。。大體的步驟如下:
1.首先在windows環境下編寫工程(eclipse下編寫android工程)
2.打開linux開發環境(tcl平台:\\10.120.90.207\longc\workspace\code\project\kernel\android\JB)
3.將運行環境的腳本文件運行./evnsetup:配置android運行環境
/JB/build/
找到envsetup.sh
運行.envsetup.sh(source envsetup.h或./envsetup)
所有操作都在終端完成
4.將工程文件拷貝到指定目錄下(TCL平台下的自帶程序在package\TCL_Apps目錄下)
5.刪除一些文件
保留/res,/src,AndroidManifest.xml三個文件
創建Android.mk(makefile文件,linux下用makefile文件來集成一些命令,運行程序的指令和設置都在此處)Android.mk的編寫
6.編譯
進入工程文件目錄
輸入mm命令進行編譯。
7.生成apk文件,編譯完成

② Android .mk文件 如何編譯生成apk文件

應用程序源碼的根目錄下面,這只有在linux下用mmm交叉編譯鏈編譯的時候才用的到,eclipse下是不會生成的。

③ linux64位 oracle11g如何使ins_ctx.mk編譯成功

從別的Linux機器上拷貝一個libstdc++.so.5.0.7替換系統里的原文件,注意不要替換符號鏈接。

④ mk是什麼格式的文件,用什麼軟體打開

單憑mk無法判斷是什麼格式的,一般軟體開發中mk是makfile文件,是指定make時的一些參數的。至於你說的是什麼,還要看文件的具體內容才能知道。你可以試著用文本編輯軟體打開看看,windows下用記事本,linux下用vi。如果顯示正常就是普通的文本格式。

⑤ 如何配置編譯在mini2440開發板上運行的linux內核

參考:http://www.it165.net/os/html/201409/9334.html

系統ubuntu12.04(非虛擬機下)
mini2440
CPU型號: S3C2440AL-40
Nanflash型號:K9F1G08
Norflash型號:SST39VF1601
LCD: 統寶 240 x 320
$: 普通賬戶
#:root賬戶
*當shell下輸入路徑時可使用tab鍵自動補全

(一)建立交叉編譯環境

1.將mini2440光碟中的linux文件夾拷貝到 /home/lianghuiyong 並改名為Linux_share
(其中兩個文檔為我後面添加進去的)

2.Ctrl+Alt+T打開shell
3.$ su - root (切換root許可權)
4.# cd /home/lianghuiyong/Linux_share
5.解壓安裝arm-linux-gcc編輯器
# tar xvzf arm-linux-gcc-4.4.3.tar.gz –C / //注意:C後面有個空格
執行該命令,將把 arm-linux-gcc 安裝到/usr/loca/arm/4.4.3 目錄。這句來自mini2440用戶手冊,我發現其實是安裝到 /opt/FriendlyARM/toolchain/4.4.3 目錄

6.# vim /root/.bashrc
7.在最後一行添加:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin //opt/FriendlyARM/toolschain/4.4.3/bin 為arm-linux-gcc 環境變數
:wq保存退出。
# source ~/.bashrc
8.# sudo gedit /etc/environment
games後面添加標記部分

9.# arm-linux-gcc -v //gcc後面有空格

測試hello.c(這是在安裝了第二部分的linux示常式序才有examples/hello目錄)
# cd /opt/FriendlyARM/mini2440/examples/hello
# arm-linux-gcc -o hello hello.c
# ./hello

(二)安裝源代碼及其他工具
創建工作目錄(以下都為root環境下):
# mkdir -p /opt/FriendlyARM/mini2440

1>>解壓安裝linux內核源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/linux-2.6.32.2-mini2440-20100106.tar.gz

2>>解壓安裝嵌入式圖形系統qtopia源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/x86-qtopia.tgz
# tar xvzf /home/lianghuiyong/Linux_share/arm-qtopia.tgz

3>>解壓安裝嵌入式圖形系統 QtE-4.6.1 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/arm-qte-4.6.3-20100802.tar.gz

4>>解壓安裝busybox 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/busybox-1.13.3-mini2440.tgz

5>>解壓安裝 Linux 示常式序
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/examples-20100108.tgz

6>>解壓安裝 vboot 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/vboot-src-20100106.tar.gz

7>>解壓安裝 bootloader 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/bootloader.tgz

8>>解壓創建目標文件系統
# cd /opt/FriendlyARM/mini2440
#tar xvzf /home/lianghuiyong/Linux_share/rootfs_qtopia_qt4-20100816.tar.gz

9>>解壓安裝目標文件系統映象製作工具 mkyaffs2image
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/mkyaffs2image.tgz –C /

10>>解壓安裝LogoMaker
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/logomaker.tgz –C /

(三)定製linux內核及製作文件系統

config_mini2440_x35 – 適用於 Sony 3.5」 LCD 的內核配置文件
config_mini2440_t35 – 適用於統寶 3.5」 LCD 的內核配置文件
config_mini2440_l80 – 適用於 Sharp 8」 LCD(或兼容)的內核配置文件
config_mini2440_n35 – 適用於 NEC3.5」 LCD 的內核配置文件
config_mini2440_h43 – 適用於 4.3」 LCD 的內核配置文件
config_mini2440_a70 – 適用於群創 7」 LCD 的內核配置文件
config_mini2440_vga1024x768 – 適用於 VGA 顯示輸出(解析度 1024x768)模塊的內核
配置文件

1.配置預設文件config_t35 (統寶240x320)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# cp config_mini2440_t35 .config
# make menuconfig
出現界面
不做更改,exit退出。這樣做是為了生成相應配置(統寶240x320)的頭文件。

2.編譯內核

在/opt/FriendlyARM/mini2440/linux-2.6.32.2 目錄下編譯內核
#make zImage
編譯結束後,會在 arch/arm/boot 目錄下生成 linux 內核映象文件:zImage(zImage 可下載到開發板測試)

3.定製linux內核(根據用戶手冊來走一遍)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# make menuconfig
出現配置選項:

3.1配置cpu
主菜單-->System --> Type S3C2400 Machines --> FriendlyARM Mini2440 development board
3.2配置lcd驅動
主菜單-->Device Drivers-->Graphics support-->Support for frame buffer devices-->Backlight-->LCD select-->3.5 inch 240x320 Toppoly LCD

3.3配置觸摸屏
主菜單-->Device Drivers-->Input device support-->Touchscreens-->Samsung s3c24410 touchscreen input driver

3.4配置usb滑鼠和鍵盤
主菜單-->Device Drivers-->hid devices-->USB Human interface Device

3.5 配置優盤
主菜單-->Device Drivers-->SCSI device support--> SCSI disk

3.6配置萬能驅動USB攝像頭
主菜單-->Device Drivers-->Multimedia devices-->Video capture adapters -->V4L USB devices-->GSPCA based webcams-->ALi USB m 5602 Camera Driver

3.7 配置CMOS攝像頭驅動
主菜單-->Device Drivers-->Multimedia devices-->Video capture adapters-->OV9650 on the s3c2440 driver

3.8配置網卡驅動
主菜單-->Netwoking support-->Networking options -->選擇Unix和TCP/IP

主菜單-->Device Drivers-->Network device support-->Ethernet (10 or 100Mbit)-->
選擇 <*> Generic Media Independent Interface device support
<*> DM9000 support

3.9 配置USB無線網卡驅動
主菜單-->Netwoking support-->wireless-->IEEE 802.11

主菜單-->Device Drivers-->Netwoking device support-->wireless LAN-->Wireless LAN(IEEE 802.11)-->Ralink driver support-->

3.10 配置音頻驅動
主菜單-->Device Drivers-->Sound card supprt-->OSS Mixer API -->ALSA for Soc audio support-->SoC Audio for the samsung S3Cxxxx Chips

3.11 配置SD/MMC卡驅動
主菜單-->Device Drivers-->MMC/SD/SDIO card-->samsung S3C SD/MMC card

3.12 配置看門狗驅動支持
主菜單-->Device Drivers-->Watchdog Timer-->s3c2440 Watchdog

3.13 配置LED驅動
主菜單-->Device Drivers-->Character devices-->LED support for Mini2440

3.14 配置按鍵驅動
主菜單-->Device Drivers-->Character devices-->Buttons driver

3.15 配置PWM控制蜂鳴器驅動
主菜單-->Device Drivers-->Character devices-->buzzer driver for

3.16 配置AD轉換驅動
主菜單-->Device Drivers-->Character devices-->ADC driver for

3.17 配置串口驅動
主菜單-->Device Drivers-->Character devices-->Serial drivers-->samsung S3C2440/S3C2442

3.18 如何配置RTC實時時鍾驅動
主菜單-->Device Drivers-->Real Time Clock-->samsung S3C series SoC RTC

3.19 配置I2C-EEPROM驅動支持
主菜單-->Device Drivers-->I2C support -->I2C Hardware Bus support-->S3C2410 I2C Driver

3.20 配置yaff2s文件系統的支持
主菜單-->Device Drivers-->MTD-->NAND Device Support -->NAND FLASH Support
主菜單-->File systems-->Miscellaneous filesystems -->YAFFS2 file system support

3.21 配置EXT2/VFAT/ NFS等文件系統
主菜單-->File systems-->Network File Systems -->root file system on NFS

為了支持FAT32 文件系統.
主菜單-->File systems-->DOS/FAT/NT Filesystems -->VFAT (windows-95) fs support

關於mini2440 linux內核裁剪到此為止,退出後有一個是否保存提示,選擇保存!

3.22 製作Linux logo

本來想使用Logomaker,結果生成的圖片都是無數據的,這可能和系統內一些參數有關
使用命令方式製作logo:
在圖片(open_show.png)目錄下
# pngtopnm open_show.png > temp.ppm
# ppmquant 224 temp.ppm >temp2.ppm
# pnmnoraw temp2.ppm > logo.ppm
將目錄下生成的logo.ppm改成linux_logo_clut224.ppm,替代linux2.6.32.2/drivers/video/logo 目錄下的同名文件

⑥ 請教linux makefile轉換為android.mk的 步驟

項目中需要將linux的應用程序放在android下面編譯。
以前的編譯用makefile,而android用android.mk
需要 linux makefile轉換為android.mk ,
將生成 可執行文件、靜態庫、動態庫 的規則對應到android.mk
還有對應makefile引入的文件順序。

⑦ 多文件使用linux進行編譯

可以使用makefile進行make編譯,建議先看一下簡單的make fike編寫規則。
一般情況下在MakeFile或*.mk下進行make就可以~~

⑧ 如何在Linux平台下編譯android工程

我是在windows下做開發的,但是編譯環境還是在linux上。。大體的步驟如下:
1.首先在windows環境下編寫工程(eclipse下編寫android工程)
2.打開linux開發環境(tcl平台:\\10.120.90.207\longc\workspace\code\project\kernel\android\JB)
3.將運行環境的腳本文件運行./evnsetup:配置android運行環境
/JB/build/
找到envsetup.sh
運行.envsetup.sh(source envsetup.h或./envsetup)
所有操作都在終端完成
4.將工程文件拷貝到指定目錄下(TCL平台下的自帶程序在package\TCL_Apps目錄下)
5.刪除一些文件
保留/res,/src,AndroidManifest.xml三個文件
創建Android.mk(makefile文件,linux下用makefile文件來集成一些命令,運行程序的指令和設置都在此處)Android.mk的編寫
6.編譯
進入工程文件目錄
輸入mm命令進行編譯。
7.生成apk文件,編譯完成

⑨ linux下用make編譯C++項目的問題。

從錯誤信息上看,你引用了」/src/makedir.mkinc「文件,應該是引用路徑不對。
檢查一下你的path_project_common定義的是什麼,感覺是被定義到了」/」。

⑩ [Linux]編寫一個簡單的C語言程序,編寫Makefile文件。

八 環境變數
8.1 查看環境變數
$ env  顯示所有的環境變數設置
$ echo $ENV_VARIABLE  顯示指定環境變數的設置
例:
$ echo $PATH
/bin:/etc:/usr/bin:/tcb/bin

8.2 設定環境變數
$ ENV_VARIABLE=XXX;export ENV_VARIABLE
例:
$ PATH=$PATH:$INFORMIXDIR/bin;export PATH  將環境變數PATH設定為原PATH值+$INFORMIXDIR/bin

8.3 取消環境變數設置
$ unset $ENV_VARIABLE
例:
$ set GZJ=gzj;export GZJ  設置環境變數GZJ
$ echo $GZJ
gzj  顯示環境變數值
$ unset $GZJ  取消環境變數GZJ的設置
$ echo $GZJ
 已取消

一 makefile規則
makefile是一個make的規則描述腳本文件,包括四種類型行:目標行、命令行、宏定義行和make偽指令行(如「include」)。makefile文件中注釋以「#」開頭。當一行寫不下時,可以用續行符「\」轉入下一行。
1.1 目標行
目標行告訴make建立什麼。它由一個目標名表後面跟冒號「:」,再跟一個依賴性表組成。
例:
example: depfile deptarget
該目標行指出目標example與depfile和deptarget有依賴關系,如果depfile或deptarget有修改,則重新生成目標。
example1 example2 example3: deptarget1 deptarget2 depfile
該目標行指出目標名表中的example1、example2、example3這三個各自獨立的目標是用相同的依賴列表和規則生成的。
clean:
空的依賴列表說明目標clean沒有其他依賴關系。

目標行後續的以Tab 開始的行是指出目標的生成規則,該Tab字元不能以空格代替。例如:
example.o:example.c example.h
cc –c example.c
該例子指出目標example.o依賴於example.c和example.h。如果example.c或example.h其中之一改變了,就需要執行命令cc –c example.c重新生成目標example.o。
可以用文件名模式匹配來自動為目標生成依賴表,如:
prog: *.c

以下是一個簡單的makefile的例子:

圖 1 最簡單的makefile例
make使用makefile文件時,從第一個目標開始掃描。上例中的第一個目標為all,所以目標clean不會自動被執行,可以通過命令make clean來生成目標。

1.2 命令行
命令行用來定義生成目標的動作。
在目標行中分號「;」後面的文件都認為是一個命令,或者一行以Tab製表符開始的也是命令。
如在上面的makefile例中,第三行以Tab字元開始的cc命令即是一個命令行,說明要生成hello應執行的命令。也可以寫成:hello:hello.o;cc –c hello –L…
一般情況下,命令行的命令會在標准輸出中回顯出來,如對上面的makefile執行make時,標准輸出如下:
cc -c hello.c
cc -o hello -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello.o
cc -c hello1.c
cc -o hello1 -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello1.o
如果不希望命令本身回顯,可在命令前加@字元,如在上例中不希望回顯cc –c hello.c和cc –c hello1.c,可修改makefile文件如下:

圖 2 抑制回顯的makefile例
對該makefile文件執行make時,標准輸出如下:
cc -o hello -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello.o
cc -o hello1 -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello1.o
可以看出,命令行前有@字元的不回顯。

1.3 宏定義行
在makefile中,可以使用宏定義減少用戶的輸入,例如上例中對hello和hello1的編譯選項均為「-L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11」,此時可以用宏來代替,如:
圖 3 使用宏定義的makefile例
宏定義的基本語法是:
name=value
在定義宏時,次序不重要。宏不需要在使用前定義。如果一個宏定義多次,則使用最後一次的定義值。
可以使用「$」字元和「()」或「{}」來引用宏,例如:
cc –o hello.o $(CCFLAGS) hello.o
也可以將一個宏賦值給另一個宏,但這樣的定義不能循環嵌套,如:
A=value1
B=value2
C=$(A) $(B)等價於C=value1 value2

1.4 偽指令
makefile大部分由宏定義行、命令行和目標行組成。第四種類型是make偽指令行。make偽指令沒有標准化,不同的make可能支持不同的偽指令集,使得makefile有一定的不兼容性。如果要考慮移植性問題,則要避免使用make偽指令。但有一些偽指令,如include,由於使用比較多,很多不同make都提供該偽指令。
1.4.1 偽指令include
該偽指令類似C語言中的#include,它允許一次編寫常用的定義並包括它。include偽指令必須在一行中,第一個元素必須是include,並且跟一個要包含的文件名,如:
include default.mk

1.4.2 偽指令「#」
「#」字元也是make的偽指令,它指出「#」後面的文件是注釋,如:
PROGNAME=test # define macro
#don't modify this

二 後綴規則
2.1 雙後綴規則
在前面的makefile例中有許多重復內容,例如,生成hello和hello1的命令類似,生成hello.o和hello1.o的命令也類似,除了編譯或鏈接的文件不一樣外,其它均相同,這時,我們就可以使用後綴規則。首先看一個雙後綴的例子:
圖 4 使用雙後綴規則的makefile例
後綴規則使用特殊的目標名「.SUFFIXES」。
第一行中.SUFFIXES的依賴表為空,用來清除原有的後綴規則,因為.SUFFIXES可以在makefile中多次使用,每一次都將新的後綴規則加入以前的後綴規則中。
第二行中指定後綴規則為「.c .o」,即表示將所有的.c文件轉換為.o文件。
第三行指定將.c文件轉換成.o文件的方法。$(CC)為make的預定義宏,其默認值為cc,$<為特殊的宏,代替當前的源文件,即所有要編譯的.c文件。
第六行指定目標hello和hello1的生成方法。$@為特殊的宏,代替當前的目標名,即hello和hello1,[email protected]即為hello.o和hello1.o。

上例介紹的是雙後綴規則,即它包含兩個後綴,如.c.o,用來把一個C源文件編譯為目標文件。雙後綴規則描述如何由第一個後綴類型的文件生成第二個後綴類型的文件,例如:.c.o規則描述如何由.c文件生成.o文件。

2.2 單後綴規則
單後綴規則描述了怎樣由指定後綴的文件生成由它基名為名字的文件。例如使用單後綴規則.c,可以由hello.c和hello1.c生成hello和hello1文件。例如將前面的makefile改為:
圖 5 使用單後綴規則的makefile例
由於.c後綴規則為make標准後綴規則,make為其指定了相應的命令行,所以在makefile中可以不用再指定其目標生成的具體命令行。

下表是make提供的標准後綴規則。
表 1 make標准後綴規則
後綴規則 命令行
.c $(LINK.c) –o $@ $< $(LDLIBS)
.c.ln $(LINK.c) $(POUTPUT OPTPUT OPTION) –i $<
.c.o $(COMPILE.c) $(OUTPUT OPTION) $<
.c.a $(COMPILE.c) –o $% $<
$(AR) $(ARFLAGS) $@ $%
$(RM) $%

三 特殊目標
在後綴規則中使用了特殊目標.SUFFIXES,用來指定新增的後綴規則。make還提供了幾個特殊目標來設置make的行為,下面為一些特殊的目標:
 .IGNORE
make在執行命令行時,如果返回的是錯誤碼,make的預設動作是停止並退出。增加該目標後,make將忽略命令行返回的錯誤碼,並繼續執行後續的操作。

 .SILENT
前面已經介紹過,make在執行命令行時會回顯命令行內容,在命令行前增加「@」字元將抑制該命令行的回顯。
如果增加該目標,所有的命令行不再回顯,相當於在每個命令行前均增加了「@」字元。

 .PRECIOUS
當收到一個信號或從shell命令返回非零的錯誤碼時,make刪除它所有已建立的文件。但有些文件即使出了錯誤,用戶也不想讓make刪除,這些文件可以作為.PRECIOUS目標的參數。它可以在一個makefile中出現多次,每一次都累積文件列表。

 .SUFFIXES
它為makefile指定新的後綴規則,新的後綴規則作為.SUFFIXES的依賴表給出。.SUFFIXES可以在一個makefile中多次使用,每一次都將新的後綴規則加入以前的後綴規則中,如果.SUFFIXES的依賴表為空,則設置後綴規則表為空。

四 特殊的宏
為簡單使用規則,make提供了幾個特殊的宏:
 $@
整個當前目標名的值可以由宏「$@」來代替。

 $<
當前的源文件由「$<」來代替。例如,在前面的例子中用到了$(CC) –c $<,其中的「$<」是所有要編譯的.c文件。宏「$<」僅在後綴規則或.DEFAULT中有效。

 $*
當前目標的基名由宏「$*」來代替。例如目標的名字是hello.o,則基名就是除去了後綴.o的hello。

以上介紹的特殊宏使用了make自身的規則,用戶不可以改變。下表介紹了C中預定義的宏。
用途 宏 默認值
庫文檔匯編命令 AR ar
ARFLAGS rv
AS as
ASFLAGS
COMPILE.s $(AS) $(ASFLAGS) $(TARGET ARCH)
C編譯器命令 CC cc
CFLAGS
CPPFLAGS
COMPILE.c $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET ARCH) –c
LINK.c $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET ARCH)
鏈接編輯器命令 LD ld
LDFLAGS
rm命令 RM rm
後綴列表 SUFFIXES .o .c .c~ .s .s~ .S .S~ .ln .f .f~ .F .F~ .l .mod .mod~ .sym
.def .def~ .p .p~ .r .r~ .y .y~ .h .h~ .sh .sh~ .cps .cps~

五 makefile的應用
當調用make時,它在當前目錄下搜索文件名是「makefile」或「Makefile」的文件,並執行。
如果不想使用上述預設文件,可以使用命令行中的「-f」來指定文件,如將編寫的makefile命名為mklib,則指定為「make –f mklib」。

熱點內容
手機ea伺服器連不上怎麼辦 發布:2025-05-15 01:35:03 瀏覽:450
資料庫數據插入語句 發布:2025-05-15 01:30:01 瀏覽:871
js是無需編譯直接運行嗎 發布:2025-05-15 01:28:30 瀏覽:476
android文件夾重命名 發布:2025-05-15 01:13:50 瀏覽:481
cns腳本 發布:2025-05-15 01:13:38 瀏覽:722
數據結構與演算法筆試題 發布:2025-05-15 01:04:20 瀏覽:417
搜狗輸入法如何直接編輯配置文件 發布:2025-05-15 00:51:47 瀏覽:668
電箱都有哪些配置 發布:2025-05-15 00:30:21 瀏覽:74
安卓qq邀請碼在哪裡尋找 發布:2025-05-15 00:02:04 瀏覽:35
三菱fx編程口 發布:2025-05-15 00:01:23 瀏覽:810