linux库制作
Ⅰ mac和linux下的静态库制作问题求助
在终端上 用GCC -c 编译出一个目标文件后缀.o
ar -r libmyku.a 目标文件 //这里是创建静态库 其中注意的是lib必须有 myku可以自行修改为任意名称
连接时 gcc 源文件 libmyku.a
Ⅱ Linux下的静态库和动态库
linux下的静态库和动态库1.制作自己的动态库和静态库linux下动态库以.so结尾,静态库以.a结尾,它们都以lib开头,比如一个库名为net,那么它的全名应该是libnet.so或者libnet.a。我们有两个文件,hello.c和test.c,下面是两个文件的内容//hello.c
www.shiwu.com
#include
<stdio.h>void
my_lib_func(){printf(Library
routine
called/r/n);}//test.c#include
<stdio.h>
www.shiwu.com
int
main(){my_lib_func();return
1;}test.c调用了hello.c的方法,我们把hello.c封装成库文件。无论是静态库还是动态库,都是由.o文件组成,我们先把gcc
-c
hello.c生成.o文件制作静态库ar
crv
libmyhello.a
hello.o,ar是生成静态库的命令,libmyhello.a是我的静态库名。下一步就是在我的程序中使用静态库
可以看到已经有了Library
routine
called的结果,说明调用成功了。下面我们删除libmyhello.a,看看程序是否还是运行正常
我们发现程序依然运行正常,说明静态库已经连接进入我们的程序中制作动态库
www.shiwu.com
我们看见动态库libmyhello.so已经生成,下面继续使用
找不到库文件,这个时候我们把so文件拷贝到/usr/lib下面
运行成功2.动态库和静态库同时存在的调用规则我们可以发现,不论是动态库还是静态库,程序编译连接的时候都是加的参数-l,那么当他们同时存在的时候,程序会选择动态库还是静态库呢。我们做个尝试。
我们同时存在libmyhello.a和libmyhello.so,我们发现运行的时候,出现找不到动态库的错误,由此,我们可以得出结论,同时存在动态库和静态库的时候,gcc会优先选择动态库作者
梨树阳光
Ⅲ C/C++有许多所谓的库文件,这些库文件是怎么制作的已有有的库文件能扩充吗这些能在Linux中做吗
人家.h头文件里写的API是跟系统的dll库对应的....
当然``你自己写dll文件的时候导出一些函数,然后发布的时候发布.h跟.lib文件,别人就能用你的DLL了
去看C语言的第一章!!!关于编译啥啥的~~
Ⅳ linux下 怎么制作软件仓库
制作软件仓库,首先讲讲安装软件的方法,现在linux发行版一般都用软件包管理,我以centos为例,用到了YUM在线升级机制,yum客户端和yum 服务器端 利用yum命令进行查询、安装、升级与删除功能 而软件仓库一般路径在yum服务器中,例如客户端设置/etc/yum.repos.d/Centos-Base.repo 中baseurl=" "这个接的就是容器的实际网址,当然可以是网络上的,也可以是本地的,路径正确就OK 至于YUM更多的东西可以上网查 很多。
Ⅳ Linux中如何创建静态库和动态库
静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。 程序1: hello.h #ifndef HELLO_H #define HELLO_H void hello(const char *name); #endif //HELLO_H 程序2: hello.c #include void hello(const char *name) { printf("Hello %s!\n", name); } 程序3: main.c #include "hello.h" int main() { hello("everyone"); return 0; } 无论动态库还是静态库都需要用到.o文件来生成,先编译生成.o文件。 # gcc -c hello.c 1:创建静态库 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。 # ar cr libmyhello.a hello.o 使用静态库:只需要在你的源程序中加入包含你所需要使用到的函数的声明(即包含头文件),然后在gcc生成目标文件时候指明静态库就OK了(除非你包含的头文件在/usr/include,库文件在标准库/usr/lib,/lib下,否则你得显示指明他们的路径) # gcc -o hello main.c -L. -lmyhello # ./hello Hello everyone! 删除静态库文件运行./hello,程序正常运行,说明静态库公用函数已经链接到目标文件。 2: 利用.o文件创建动态库 动态库文件扩展名为.so。 # gcc -shared -fPCI -o libmyhello.so hello.o 动态库的使用与静态库使用方式一样 # gcc -o hello main.c -L. -lmyhello # ./hello ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory 哦!出错了。快看看错误提示,原来是找不到动态库文件libmyhello.so。程序在运行时,会在/usr/lib和/lib等目录中查找需要的动态库文件。若找到,则载入动态库,否则将提示类似上述错误而终止程序运行。
Ⅵ linux中做一个简单数据库
如果是 需要做开发用的话
推荐用 Postgresql
http://www.postgresql.org/
如果想学习一下的话 推荐看看这个 用perl 做的轻量级数据库
http://perldatabase.sourceforge.net/