创建静态库。a文件。用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚 本中用到。关于Linux下的库文件、静态库、动态库以及瞎举怎样创建和使用等相关知识,参见本文后面的相关资料【3】《关于Linux静态库和动态库的分析》。
常用参数
格式:ar rcs libxxx.a xx1.o xx2.o
参数r:在库中插入模块(替换)。当插入的模块名已经在库中存在,则替换同名的模罩神前块。如果若干模块中有一个模块在库中不存在,ar显示一个错误消息,并不替换其他同名模块。默认的情况下,新的成员增加在库的结尾处,可以使用其他任选项来改变增加的位置。【1】
参数c:创建物清一个库。不管库是否存在,都将创建。
参数s:创建目标文件索引,这在创建较大的库时能加快时间。(补充:如果不需要创建索引,可改成大写S参数;如果。a文件缺少索引,可以使用ranlib命令添加)
格式:ar t libxxx.a
显示库文件中有哪些目标文件,只显示名称。
格式:ar tv libxxx.a
显示库文件中有哪些目标文件,显示文件名、时间、大小等详细信息。
格式:nm -s libxxx.a
显示库文件中的索引表。
格式:ranlib libxxx.a
为库文件创建索引表。
使用示例
示例一 在shell脚本中使用
Bash代码
OS=`uname -r`
ar rcs libhycu.a.$OS *.o
示例二 在makefile中使用
Makefile代码
$(BIN1): $(BIN1_OBJS)
ar rcs $@ $^
示例三 创建并使用静态库
第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
vi test.h test.c main.c
第二步:将test.c编译成目标文件。
gcc -c test.c
如果test.c无误,就会得到test.o这个目标文件。
第三步:由。o文件创建静态库。
ar rcs libtest.a test.o
第四步:在程序中使用静态库。
gcc -o main main.c -L. -ltest
因为是静态编译,生成的执行文件可以独立于。a文件运行。
第五步:执行。
./main
示例四 创建并使用动态库
第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
vi test.h test.c main.c
第二步:将test.c编译成目标文件。
gcc -c test.c
前面两步与创建静态库一致。
第三步:由。o文件创建动态库文件。
gcc -shared -fPIC -o libtest.so test.o
第四步:在程序中使用动态库。
gcc -o main main.c -L. -ltest
当静态库和动态库同名时,gcc命令将优先使用动态库。
第五步:执行。
LD_LIBRARY_PATH=. ./main
示例五 查看静态库中的文件
[root@node56 lib]# ar -t libhycu.a
base64.c.o
binbuf.c.o
cache.c.o
chunk.c.o
codec_a.c.o
…
xort.c.o
[root@node56 lib]#
[root@node56 lib]# ar -tv libhycu.a
rw-r--r-- 0/0 7220 Jul 29 19:18 2011 base64.c.o
rw-r--r-- 0/0 2752 Jul 29 19:18 2011 binbuf.c.o
rw-r--r-- 0/0 19768 Jul 29 19:18 2011 cache.c.o
…
rw-r--r-- 0/0 4580 Jul 29 19:18 2011 xort.c.o
[root@node56 lib]#
[root@node56 lib]# nm -s libhycu.a | less
Archive index:
Base64Enc in base64.c.o
GetBase64Value in base64.c.o
Base64Dec in base64.c.o
encode64 in base64.c.o
decode64 in base64.c.o
check64 in base64.c.o
test64 in base64.c.o
…
chunk_alloc in chunk.c.o
[root@node56 lib]#
可以看ar的软件有很多,下面列举几个:
1、百度地图AR实景导航
随着现在经济的发展,交通路况也是变得复杂,纵横交错一不小心就会走错路,这时候就需要一款AR实景导航App软件了,AR实景导航软件将AR技术与导航功能完美结合,一键开取就可以通过手机看到全景的路况及终点,方向分明,能在交杂的路口提前规划路线指引。
百度地图手机版虽然算不上神级应用,但在一定程度上说是一个不错的地图软件,百度地图手机版在使用上也算是得心应手,没有过多繁杂的按钮,并配有AR实景导航。AR导航对于用户而言最大的变化就是直观性,在真实的路况信息中,实时出现一些虚拟指向箭头来更直观地引导我们前进。
2、《Spacecraft 3D》
《Spacecraft 3D》是一款用于展示航天设备的AR应用,值得一提的是,这款APP由美国宇航局NASA官方制作,使用者将看到多个航空航天领域中的尖端设备。
作为人类航天事业顶尖水平的代表,美国宇航局NASA在探索宇宙的过程中研制了许多种航天器材,无论是航天飞船或者探测车,都使用了大量的高精尖技术。而对普通人来说,想近距离仔细观察航空航天设备是几乎不可能的。
3、智能工具箱(Smart Tools)
《智能工具箱Smart Tools》是一款非常实用的测量工具,基于AR(增大化现实)技术。拥有尺子,测距仪,手电筒,指南针罗盘和声音震动等工具。比方说当你想测试一下前方物体与自己的相对距离时,实景+勾股定理就能很快得出最终结果。
量角仪和高度仪也是一样,实景的加入让我们可以更直观地测量到平时难以量取的东西。当然由于镜头及手持上的误差,这里测得的结果或许不如真正的尺子那般精准,但胜就胜在简单高效,在很多时候还是很有用的。
4、Wanna Kicks
在网购球鞋盛行的今天,相信不少鞋迷都遇过收到实物后发现并不适合自己的经历,毕竟一双鞋的照片与实物时常会有所差距。
Wanna Kicks通过AR技术与智能手机相机的结合,帮助你看到运动鞋“穿”在自己脚上的效果,甚至还能模拟出鞋子在光线不同环境下的各种效果。用户只需从3D模型列表中选择一双鞋,并且将相机指向脚,然后就可以在Wanna Kicks内看到穿上这双鞋的效果了。
这种氏贺效果是非常即时的,并且可以很好地跟踪你移动和旋转你的脚或者改变相机的角度。用户甚至可以尝试步行,AR应用程序会跟随你的脚步。但站在镜子前的效果不太迹核念好,WannaKicks的制造商承诺在后续的更新中会解决这一问题。
5、云观博
云观博是博物馆领域首款基于移动互联网端的AR技术的智慧讲解应用,突破了传统博物馆藏品展陈的时空限制,让文物“活起来”了,是移动“互联网+”时代下,改变博物馆观览方式的革命性产品。
云姿困观博手机版用手机扫文物就能通过音频、视频、图片等形式观看文物的前世今生,直接在手机上了解文物知识,边走边看,根本不需要讲解员,家长带着孩子也能立刻为其解释这个文物的历史,十分方便。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)