Linux的拓扑结构,linux底下的makefile框架拓扑结构分析

Linux的拓扑结构,linux底下的makefile框架拓扑结构分析linux底下的makefile框架拓扑结构分析
2000导航Make file
由于把系统所的东西都整合在⼀起编译,有些要编译的项⽬可能记不住,这时必须写个makefile的help命令,⽤来导出可以编译的项⽬.
这时可以执⾏make help命令
[czw@localhost project]$ make help
短期融资券管理办法make diagnose u can get information
how to build a project
氨基酸合成step1:make com2com
step2:make com2comclean
handapp
gpsapp
wtdapp
logapp
evdoapp
mainapp
rootfs_img
busybox
com2com
libnl6k
libnl6ksys
home_img
update
pppd
tinylogin
在调试makefile的过程中,可能需要对⼀些路径或者变量的值的预期进⾏验证,这时可以执⾏make
diagnose命令,会把你想知道的路径打印出来
⽰例如下:
[czw@localhost project]$ make diagnose
PROJECT_BUSYBOX=
PROJECT_LINUX=/home/czw/project/kernel/linux
PROJECT_UBOOT=/home/czw/project/uboot
PROJECT_LIBDES=/home/czw/project/src/libdes
WORKSPACE=/home/czw/project
CROSS=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-
如何编译⼀个应⽤,举个例⼦:
当然在编译应⽤之前,最好先确认使⽤的⼯具链是哪个.
[czw@localhost project]$ env
PATH=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin:/usr/local/bin:/bin:/usr/bin:/home/czw/bin 好了,看到了⼯具链正是可以⽤来编译海思平台的,
PATH=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin
附注:export PATH=
PATH=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin:$PATH
(这条命令可以⽤来设置当前⼯具链的)
⽰例:编译mainapp这个应⽤,编译完后会把编译结果放在scripts⽬录底下(cp
/home/czw/project/src/MainApp/MainApp /home/czw/project/scripts
)
[root@localhost project]# make mainapp
cd /home/czw/project/src/MainApp;make
make[1]: Entering directory `/home/czw/project/src/MainApp'
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc
-D__ARM_CPU__ -c -o obj/NL_Main.o
-I/home/czw/project/NL6KLIB/include NL_Main.c
原味之恋
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc
-D__ARM_CPU__ -c -o obj/NL_Alarm.o
-I/home/czw/project/NL6KLIB/include NL_Alarm.c
/
opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc
-D__ARM_CPU__ -c -o obj/NL_DynamicMenu.o
-I/home/czw/project/NL6KLIB/include NL_DynamicMenu.c
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc
-D__ARM_CPU__ -c -o obj/NL_GPS.o
-I/home/czw/project/NL6KLIB/include NL_GPS.c
In file included from NL_GPS.c:35:
/home/czw/project/NL6KLIB/include/libzlib.h:30:7: warning: no
newline at end of file
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc
-D__ARM_CPU__ -c -o obj/NL_Menu.o
-
I/home/czw/project/NL6KLIB/include NL_Menu.c
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/NL_Misc.o
-I/home/czw/project/NL6KLIB/include NL_Misc.c
In file included from NL_Misc.c:18:
/home/czw/project/NL6KLIB/include/libzlib.h:30:7: warning: no
newline at end of file
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/NL_Net.o
-I/home/czw/project/NL6KLIB/include NL_Net.c
NL_Net.c: In function `NL_Net_WL_SHM':
NL_Net.c:619: warning: use of cast expressions as lvalues is
deprecated
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/NL_Recieve.o
-I/home/czw/project/NL6KLIB/include NL_Recieve.cqibozi
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/NL_Send.o
-I/home/czw/project/NL6KLIB/include NL_Send.c
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/NL_Set.o
-I/home/czw/project/NL6KLIB/include NL_Set.c
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/NL_Update.o
-I/home/czw/project/NL6KLIB/include NL_Update.c
In file included from NL_Update.c:17:
/home/czw/project/NL6KLIB/include/libzlib.h:30:7: warning: no
newline at end of file
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/NL_Camera.o
-I/home/czw/project/NL6KLIB/include NL_Camera.c
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/NL_Ext_Dev.o
-I/home/czw/project/NL6KLIB/include NL_Ext_Dev.c
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc
-D__ARM_CPU__ -c -o obj/NL_Tts.o
-I/home/czw/project/NL6KLIB/include NL_Tts.c
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/Msg_Handle.o
-I/home/czw/project/NL6KLIB/include Msg_Handle.c
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/Msg_CRC.o
-I/home/czw/project/NL6KLIB/include Msg_CRC.c
/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -c -o obj/Msg_Parser.o
-I/home/czw/project/NL6KLIB/include Msg_Parser.c
In file included from Msg_Parser.c:23:
/home/czw/project/NL6KLIB/include/libzlib.h:30:7: warning: no
newline at end of file
/
opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-gcc -D__ARM_CPU__ -L/home/czw/project/NL6KLIB -o MainApp obj/NL_Main.o
obj/NL_Alarm.o obj/NL_DynamicMenu.o obj/NL_GPS.o obj/NL_Menu.o
obj/NL_Misc.o obj/NL_Net.o obj/NL_Recieve.o obj/NL_Send.o
obj/NL_Set.o obj/NL_Update.o obj/NL_Camera.o obj/NL_Ext_Dev.o
obj/NL_Tts.o obj/Msg_Handle.o obj/Msg_CRC.o obj/Msg_Parser.o -lNL6K
-lNL6Ksys -lpthread -ldes -lzlib -lrsa -lencryption -lm
make[1]: Leaving directory `/home/czw/project/src/MainApp'
cp /home/czw/project/src/MainApp/MainApp
/home/czw/project/scripts
⽰例:如何来清除⼀个应⽤的编译结果呢?
[root@localhost project]# make mainappclean
cd /home/czw/project/src/MainApp;make clean
make[1]: Entering directory `/home/czw/project/src/MainApp'
rm -f MainApp
rm -rf obj
make[1]: Leaving directory `/home/czw/project/src/MainApp'
好了现在来看⼀个应⽤是如何被编译的细节东西了?
1:介绍这个之前要看⼀个如以⼀下图
2:要弄懂架构的组织⽅式
3:每个⼈在服务器都是有⼀个⼯作⽬录,位置在(home/czw /home/wangx /home/wmh等等)
4:在/home/czw ⽬录底下创建⼀个⽬录⽤来作为海思平台的开发⽬录:名字起为workspace
当然也可以是其它名字,最好能统⼀为workspace。
4:个⼈⽬录的组织拓扑结构:从172.16.6.98/svn/project/trunk⽬录底下check黄曲霉菌
out⼀份属于⾃⼰访问权限内的⽬录结构到/home/czw/worksapce ( 以czw⽤户为例)
好了来看从svn服务器获取代码后的⽬录结构,
/home/czw/workspace---
|src
|scripts
|third-part
|makefile
|build
|doc
|rootfs
|kernel----------|busybox
| |uboot
| |linux
|
|
现在可以来探讨主makefile了
#cd /home/czw/workspace
#获取当前的⼯作⽬录,作为海思平台的开发⽬录附注(其实这个⽬录可以是任意的不要以为只界定在/home/czw/workspace,也可以
是/home****/workspace等)
export WORKSPACE=$(PWD)-------海思平台的⼯作⽬录
#编译项⽬所在的⽬录
export
PROJECT_MAINAPP=$(WORKSPACE)/src/MainApp-------⽤来指定要编译的应⽤所在的⽬录
SCRIPT=$(WORKSPACE)/scripts-----⽤来存放编译结果的
mainapp:
cd $(PROJECT_MAINAPP);make //进⼊应⽤的⽬录,进⾏编译
cp $(PROJECT_MAINAPP)/MainApp $(SCRIPT) //把编译结果拷贝到script⽬录底下
想引进的⼀套机制,该机制应该功能⽐较灵活强⼤,适合于⼤型应⽤组织架构的编译。该机制不但可以解决应⽤编译的问题,⽽且还能解决动态库的⽣成,静态库的⽣成,这些机制已经做实验验证过.
举个例⼦:

本文发布于:2024-09-21 01:28:11,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/264766.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:编译   机制   开发   路径   结果
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议