[问题]创建自己的函数库

软件和网站开发以及相关技术探讨
回复
stubobo
帖子: 18
注册时间: 2007-12-26 13:29

[问题]创建自己的函数库

#1

帖子 stubobo » 2008-04-26 9:13

本人想用ar创建个自己的函数库,ar rs lib-name(这个是不是要以lib开头?以.so为后
缀?) list-of-files(是用.c为后缀那个文件吗?还是....)
我建的库在/*home*/Ctry中
先有
#文件名/*max3.c*/
#include <stdio.h>
int main(int a,int b,int c)
{
int min;
min=(a<=b)?(a<=c?a:c):(b<=c?b:c);
return min;
}

/*min3.c*/
#include <stdio.h>
int main (int a,int b, int c)
{
int max;
max=(a>=b)?(a>=c?a:c):(b>=c?b:c);

max=(a>=b)?(a>=c?a:c):(b>=c?b:c);
return max;
}
/*compare.c*/
#include <stdio.h>
int main()
{
int a,b,c;
int min,max;
printf("please input 3 integer: ");
scanf("%d%d%d",&a,&b,&c);
max=max3(a,b,c);
min=min3(a,b,c);
printf("the max integer is: ",max);
printf("the min integer is: ",min);

}
然后ar rs libcompare.so max3 min3
gcc -o compare -L /home/**/Ctry -lcompare compare.c
出现了一堆错。。。不想看啊。。
dbzhang800
帖子: 3182
注册时间: 2006-03-10 15:10
来自: xi'an China
联系:

Re: [问题]创建自己的函数库

#2

帖子 dbzhang800 » 2008-04-26 9:42

本人想用ar创建个自己的函数库,ar rs lib-name(这个是不是要以lib开头?
名字随便取,一般是以lib开头,因为链接时的-l能自动处理这种 libaaaa.a结构
以.so为后缀?)
错了,ar只能创建静态库

代码: 全选

list-of-files(是用.c为后缀那个文件吗?还是....)
错,.c是源代码,必须先用编译器编译成 .o文件
我建的库在/*home*/Ctry中
先有
#文件名/*max3.c*/
#include <stdio.h>
int main(int a,int b,int c)
{
int min;
min=(a<=b)?(a<=c?a:c):(b<=c?b:c);
return min;
}

/*min3.c*/
#include <stdio.h>
int main (int a,int b, int c)
{
int max;
max=(a>=b)?(a>=c?a:c):(b>=c?b:c);

max=(a>=b)?(a>=c?a:c):(b>=c?b:c);

return max;
}
/*compare.c*/
#include <stdio.h>
int main()
{
int a,b,c;
int min,max;
printf("please input 3 integer: ");
scanf("%d%d%d",&a,&b,&c);
max=max3(a,b,c);
min=min3(a,b,c);
printf("the max integer is: ",max);
printf("the min integer is: ",min);

}
然后ar rs libcompare.so max3 min3
gcc -o compare -L /home/**/Ctry -lcompare compare.c
出现了一堆错。。。不想看啊。。
我不清楚这是不是你发帖时的笔误,但愿是吧。

有一点可以肯定,你应该没好好看置顶的gcc新手入门,也没看相关词条C编译初步
stubobo
帖子: 18
注册时间: 2007-12-26 13:29

#3

帖子 stubobo » 2008-04-29 11:26

我没看过.....................我是菜鸟.只是在图书馆借了本书,看书学的。
不过我用这个命令有生成一个.so文件啊
如果我想实现上面的功能,你可以贴个正确的代码给我参考一下吗?
dbzhang800
帖子: 3182
注册时间: 2006-03-10 15:10
来自: xi'an China
联系:

#4

帖子 dbzhang800 » 2008-04-29 11:37

stubobo 写了:我没看过.....................我是菜鸟.只是在图书馆借了本书,看书学的。
不过我用这个命令有生成一个.so文件啊
记住一点,类Unix系统下面后缀名归根到底是没什么意义的,你可以试着把一个pdf文件后缀改成.so,改成.a,改成.c,去掉后缀等,不管怎么改,他都是一个标准的pdf文件,都可以被正确地打开。既然这样为什么大家为什么还要用.pdf呢。主要是兼容windows,如果你把一个pdf保存成 ***.doc,linux下面打开是没问题的,要是传给一个win用户呢?

同样,你用ar生成一个静态库 ***.a ,却给它一个动态库的名字.so,自己用应该没问题,因为我想你用的时候也是作为用静态库的语法调用的。

记住一点,后缀名是没实质意义的,比如 c 源代码可以用 .java 做后缀,gcc -xc 111.java -o hello 编译的一个标准的 C 程序,但我相信没人会这么用。
如果我想实现上面的功能,你可以贴个正确的代码给我参考一下吗?
晕了:shock: ,我上面不是提到了吗?
gcc新手入门
C编译初步

这两个都是最基本的内容,如果看不懂(当然这个前提应该不会存在的),照着走一遍总可以把。
李威小威
帖子: 1
注册时间: 2011-08-09 16:55

Re: [问题]创建自己的函数库

#5

帖子 李威小威 » 2011-08-09 17:01

ar -cr libtest.a test1.o test2.o
不过这是生成静态库
生成动态库的过程:
gcc -o test1.o test1.c -fpic
gcc -o test2.o test2.c -fpic

gcc -o libtest.so test1.o test2.o -shared -fpic

gcc -o app main.c -L. -l test
回复