免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3454 | 回复: 8
打印 上一主题 下一主题

[函数] 向高手请教:怎样建立自己的库函数? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-07 22:47 |只看该作者 |倒序浏览
环境:sco unix 5.0.7
求高手举一个例子,生成.a文件,并且该如何引用?谢谢!

论坛徽章:
0
2 [报告]
发表于 2005-12-07 23:11 |只看该作者
> cat add.c:

  1. int add(int x, int y)
  2. {
  3.         return x + y;
  4. }
复制代码

> gcc -c add.c ====> 得到add.o

> ar -q libadd.a add.o ====> 得到静态库libadd.a

> cat test.c:

  1. #include <stdio.h>

  2. int add(int, int);

  3. int main()
  4. {
  5.         printf("%d\n", add(3, 4));
  6.         return 0;
  7. }
复制代码

> gcc test.c -ladd -L/home/xwzss/test ====> /home/xwzss/test为库所在路径

> ./a.out
7

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2005-12-07 23:26 |只看该作者
楼主先看书,好吗?

这是一个基础得不能再基础的问题.

论坛徽章:
0
4 [报告]
发表于 2005-12-08 20:59 |只看该作者

回复 3楼 snow888 的帖子

请指点看那本书?多谢!!!

论坛徽章:
0
5 [报告]
发表于 2005-12-09 17:53 |只看该作者

请高手指点我的.a文件

> cat vio.c:
#include <stdio.h>
#include <stdlib.h>
#include </usr/wsj/include/vio.h>
void inits( )
{ initscr ( );
  raw( );
  noecho( );
  keypad(stdscr,TRUE);
}
void ends( )
{ keypad(stdscr,FALSE);
  echo( );
  noraw( );
  endwin( );
}
void cls( )
{ clear( );
  refresh( );
}
void xystr(x,y,str)
int x,y;
char *str;
{   short i;
    move(x,y);
    for(i=0;i<strlen(str);i++)
       addch(SPACE);
    refresh( );
    move(x,y);
    addstr(str);
    refresh( );
}

论坛徽章:
0
6 [报告]
发表于 2005-12-09 17:56 |只看该作者

请高手指点我的.a文件

> makefile 文件
obj/vio.o: vio.c
        cc -DM_TERMINFO vio.c -ltinfo -c
        @mv vio.o obj
libvio.a: obj/vio.o include/vio.h
        rm /usr/wsj/lib/libvio.a
        ar -q /usr/wsj/lib/libvio.a  obj/vio.o
        granlib /usr/wsj/lib/libvio.a
        @chmod 0777 /usr/wsj/lib/libvio.a


得到静态库libvio.a
引用:libvio.a
> cat test .c


#include "/usr/wsj/include/vio.h"
main( )
{
char *str="欢迎光临";
int x=12,y=36;
inits( );
xystr(x,y,str);
ends( );
}



编译:
〉cc -DM_TERMINFO vid.c -ltinfo  -L /usr/wsj/lib -lvio -o vid
结果出错如下:


$cc -DM_TERMINFO vid.c -ltinfo  -L /usr/wsj/lib -lvio -o vid
undefined                            first referenced
symbol                                  in file
initscr32                                /usr/wsj/lib/libvio.a
raw                                      /usr/wsj/lib/libvio.a
noecho                                   /usr/wsj/lib/libvio.a
stdscr                                   /usr/wsj/lib/libvio.a
keypad                                   /usr/wsj/lib/libvio.a
echo                                     /usr/wsj/lib/libvio.a
noraw                                    /usr/wsj/lib/libvio.a
endwin                                   /usr/wsj/lib/libvio.a
wclear                                   /usr/wsj/lib/libvio.a
wrefresh                                 /usr/wsj/lib/libvio.a
wmove                                    /usr/wsj/lib/libvio.a
w32addch                                 /usr/wsj/lib/libvio.a
waddstr                                  /usr/wsj/lib/libvio.a
i386ld fatal :Symbol referencing errors. No output written to vid
$

论坛徽章:
0
7 [报告]
发表于 2005-12-10 09:58 |只看该作者
-L后面没有空格.

论坛徽章:
0
8 [报告]
发表于 2005-12-10 16:05 |只看该作者
静态库容易,动态库有人有详细说明吗?

论坛徽章:
0
9 [报告]
发表于 2005-12-10 16:41 |只看该作者
google Program-Library-HOWTO.pdf
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP