仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 462|回复: 8
打印 上一主题 下一主题

[其他Linux] 来讲讲:Linux操纵体系下静态库的天生及链接办法

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 17:18:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
系统做了些什么,这需要时间去掌握,(背命令不是一件好的学习方法,相信我你一定会在你背完之前全部忘光),尽量掌握常用命令;
Linux下静态库文件的扩大名为".so"(SharedObject)。依照商定,一切静态库文件名的情势是libname.so(大概在名字中到场版本号)。如许,线程函数库被称作libthread.so。静态库的文件名情势是libname.a。共享archive的文件名情势是libname.sa。共享archive只是一种过渡情势,匡助人们从静态库变化到静态库。
  本文仅以复杂的例子先容静态库文件的天生和链接办法。
  操纵体系:Debian/GNULinux2.6.21-2-686;GCC版本:4.1.3
  1、库文件及测试文件代码
  库文件及测试文件地点的目次:/home/program/。
  1.库文件名:myfunction.c
/*Author:Godbach
E-mail:nylzhaowei@163.com
*/
#include<stdio.h>
int
my_lib_function(void)
{
printf("Libraryroutinecalledfromlibmyfunction.so!
");
return0;
}


  2.测试文件名:test.c
#include<stdio.h>
intmain(void)
{
my_lib_function();
return0;
}


  2、静态库的编译办法
  编译库文件myfunction.c:
debian:/home/program#gcc-shared-olibmyfunction.somyfunction.c


  假如编译乐成,会在/home/program/下天生静态库文件:libmyfunction.so。
  这里有两点必要申明:
  1.对Linux操纵,一样平常都保举在一般用户形式下,假如必要超等用户的权限,则能够经由过程suroot,输出root用户暗码切换。我是团体进修利用,同时又有良多的操纵都要利用root用户,因而就间接在root用户下举行编译。
  2.编译天生静态库的命令为:gcc(-fpic)-shared-olibmyfunction.somyfunction.c
  -fpic使输入的工具模块是依照可重定位地点体例天生的。
  -shared指定把对应的源文件天生对应的静态链接库文件。
  3、静态库的测试办法
  编译测试文件test.c:
debian:/home/program#gcc-otesttest.c/home/program/libmyfunction.so


  乐成编译后,天生test文件,运转test:
debian:/home/program#./test

Libraryroutinecalledfromlibmyfunction.so!


  个中,gcc-otesttest.c/home/program/libmyfunction.so的最初一个参数指定所链接库文件的相对路径。本例中库文件的相对路径为:/home/program/libmyfunction.so。
  固然,假如想从体系的库文件路径(一般体系函数库的位于/usr/lib下)链接静态库的话,能够先将天生的库文件拷贝至/usr/lib/下,然后再链接:
debian:/home/program#cplibmyfunction.so/usr/lib/
debian:/home/program#gcc-otesttest.c-lmyfunction
debian:/home/program#./test

Libraryroutinecalledfromlibmyfunction.so!


  这里,关于链接的办法作一下注释。关于gcc-otesttest.c-lmyfunction中最初一个参数-lmyfunction,可见传给C编译器的命令行参数并未提到函数库的完全路径名,乃至没有提到在函数库目次中该文件的完全名字!实践上,编译器原告知依据选项-lmyfunction链接到响应的函数库(/usr/lib下),函数库的名字是libmyfunction.so,也就是说,"lib"部分和文件的扩大名被省略了,但在后面加了一个l。

</p>
学习linux,就意味着更快的开发效率,等更多关于软件本身或者说操作系统本身的理解。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-18 17:45:23 | 只看该作者
首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。
山那边是海 该用户已被删除
板凳
发表于 2015-1-22 19:46:15 | 只看该作者
随着Linux技术的更加成熟、完善,其应用领域和市场份额继续快速增大。目前,其主要应用领域是服务器系统和嵌入式系统。然而,它的足迹已遍布各个行业,几乎无处不在。
飘飘悠悠 该用户已被删除
地板
发表于 2015-1-31 11:22:34 来自手机 | 只看该作者
Windows有MS-DOS?方式,在该方式下通过输入DOS命令来操作电脑;Linux与Windows类似,也有命令方式,Linux?启动后如果不执行?X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。?
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-6 19:10:13 | 只看该作者
工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。
深爱那片海 该用户已被删除
6#
发表于 2015-2-18 09:02:30 | 只看该作者
虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-6 04:01:09 | 只看该作者
上课传授的不仅仅是知识,更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,让同学理解很快;更可贵的是不以你过去的成绩看问题.
飘灵儿 该用户已被删除
8#
发表于 2015-3-12 20:50:20 | 只看该作者
目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
活着的死人 该用户已被删除
9#
发表于 2015-3-20 02:59:26 | 只看该作者
写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 07:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表