1985五角大硬币多少钱:生成库
来源:百度文库 编辑:中财网 时间:2024/05/05 22:07:15
生成库
第一步要把源代码编绎成目标代码。以下面的代码为例,生成上面用到的hello库:
/* hello.c */ #include void sayhello() { printf("hello,world "); }
用gcc编绎该文件,在编绎时可以使用任何全法的编绎参数,例如-g加入调试代码等: gcc -c hello.c -o hello.o
1.连接成静态库 连接成静态库使用ar命令,其实ar是archive的意思 $ar cqs libhello.a hello.o
2.连接成动态库 生成动态库用gcc来完成,由于可能存在多个版本,因此通常指定版本号: $gcc -shared
-Wl,-soname,libhello.so.1 -o libhello.so.1.0 hello.o 另外再建立两个符号连接: $ln
-s libhello.so.1.0 libhello.so.1 $ln -s libhello.so.1 libhello.so
这样一个libhello的动态连接库就生成了。最重要的是传gcc -shared 参数使其生成是动态库而不是普通执行程序。 -Wl
表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每一个库都有一个soname,当连接器发现它正
在查找的程序库中有这样一个名称,连接器便会将soname嵌入连结中的二进制文件内,而不是它正在运行的实际文件名,在程序执行期间,程序会查找拥有
soname名字的文件,而不是库的文件名,换句话说,soname是库的区分标志。
这样做的目的主要是允许系统中多个版本的库文件共存,习惯上在命名库文件的时候通常与soname相同 libxxxx.so.major.minor
其中,xxxx是库的名字,major是主版本号,minor 是次版本号
总结
通过对LINUX库工作的分析,我们已经可以理解程序运行时如何去别的地方寻找“库”,在下一篇文章中我继续研究可执行程序的执行过程,这两天在写一个服务器上的脚本,快成功了。花在Linux上的时间明显少了点,等过两天把这个小程序开发完毕以后马上转回正行。
第一步要把源代码编绎成目标代码。以下面的代码为例,生成上面用到的hello库:
/* hello.c */ #include void sayhello() { printf("hello,world "); }
用gcc编绎该文件,在编绎时可以使用任何全法的编绎参数,例如-g加入调试代码等: gcc -c hello.c -o hello.o
1.连接成静态库 连接成静态库使用ar命令,其实ar是archive的意思 $ar cqs libhello.a hello.o
2.连接成动态库 生成动态库用gcc来完成,由于可能存在多个版本,因此通常指定版本号: $gcc -shared
-Wl,-soname,libhello.so.1 -o libhello.so.1.0 hello.o 另外再建立两个符号连接: $ln
-s libhello.so.1.0 libhello.so.1 $ln -s libhello.so.1 libhello.so
这样一个libhello的动态连接库就生成了。最重要的是传gcc -shared 参数使其生成是动态库而不是普通执行程序。 -Wl
表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每一个库都有一个soname,当连接器发现它正
在查找的程序库中有这样一个名称,连接器便会将soname嵌入连结中的二进制文件内,而不是它正在运行的实际文件名,在程序执行期间,程序会查找拥有
soname名字的文件,而不是库的文件名,换句话说,soname是库的区分标志。
这样做的目的主要是允许系统中多个版本的库文件共存,习惯上在命名库文件的时候通常与soname相同 libxxxx.so.major.minor
其中,xxxx是库的名字,major是主版本号,minor 是次版本号
总结
通过对LINUX库工作的分析,我们已经可以理解程序运行时如何去别的地方寻找“库”,在下一篇文章中我继续研究可执行程序的执行过程,这两天在写一个服务器上的脚本,快成功了。花在Linux上的时间明显少了点,等过两天把这个小程序开发完毕以后马上转回正行。
GCC能调用/生成DLL动态连接库吗
生成html
生成什么?
组合生成
反应生成
最小生成树的生成
在CorelDRAW 生成条形码怎么生成.
asp.net 如何生成生成 html 代码?
什么时候生成二价铁?什么时候生成三价铁?
C++动态库中为什么不能释放调用动态库中生成的指针?
如何在C++动态库中释放调用动态库程序中生成的指针?
c#语言asp.net实现treeview控件读数据库动态生成树的代码
protel99se中能把别人原理图的元件生成库吗?怎么弄
请问“生成动态链接库使用CC”中的CC是什么意思啊
铜生成铜绿方程式
视频文件怎么生成可执行文件?
什么叫教学生成
煤气燃烧生成什么?
怎么生成ROM文件
氧化镁加水生成什么?
什么叫做生成文件?
设计的文化生成
食物血糖生成指数
如何生成JS文件