免费注册 查看新帖 |

Chinaunix

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

[C] gcc为什末要加-lcurses, 而make test7报错 [复制链接]

论坛徽章:
17
2015年辞旧岁徽章
日期:2015-03-03 16:54:152017金鸡报晓
日期:2017-02-08 10:39:422017金鸡报晓
日期:2017-01-10 15:19:56JAVA
日期:2016-11-01 13:25:46C
日期:2016-10-25 16:01:4715-16赛季CBA联赛之八一
日期:2016-06-21 23:38:0815-16赛季CBA联赛之山东
日期:2016-05-12 12:49:54IT运维版块每日发帖之星
日期:2016-04-20 06:20:00IT运维版块每日发帖之星
日期:2016-03-22 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13IT运维版块每日发帖之星
日期:2015-08-25 06:20:002015亚冠之德黑兰石油
日期:2015-08-22 22:55:54
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-16 17:12 |只看该作者 |倒序浏览
如题, 代码见下面

make test7报错:
$ make test7
cc     test7.c   -o test7
/tmp/cc2P6xHJ.o: In function `main':
test7.c.text+0x60): undefined reference to `initscr'
test7.c.text+0x65): undefined reference to `cbreak'
test7.c.text+0x6a): undefined reference to `noecho'
test7.c.text+0x6f): undefined reference to `stdscr'
test7.c.text+0x77): undefined reference to `wgetch'
test7.c.text+0x7f): undefined reference to `endwin'
collect2: ld returned 1 exit status
make: *** [test7] Error 1


下面表已正常:
gcc -lcurses -o test7 test7.c


######################
代码如下

cat test7.c

#include <stdio.h>
#include <curses.h>

void aa(int x,float y) {
        printf("%d--%f\n",x,y);
}

main() {
        int a;
        float b;
        char ch;

        scanf("%d%f",&a,&b);
        aa(a,b);

        initscr();
        cbreak();
        noecho();
        ch = getch();
        endwin();
        printf("You input a :%c\n", ch);

}

论坛徽章:
0
2 [报告]
发表于 2009-09-16 17:26 |只看该作者

回复 #1 ccjsj1 的帖子

libcurses.a

论坛徽章:
0
3 [报告]
发表于 2009-09-16 20:40 |只看该作者
link curses,这是ld的问题,和gcc没关系。
去查查手册去吧,gnu toolchain的参数。

论坛徽章:
0
4 [报告]
发表于 2009-09-17 08:14 |只看该作者

回复 #3 prolj 的帖子

有这么复杂么?不就是少加了libcurses.a这个包么?

论坛徽章:
0
5 [报告]
发表于 2009-09-17 10:22 |只看该作者
麻烦使用代码标签把代码括起来

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2009-09-17 10:26 |只看该作者
学学怎么写 Makefile 吧。

论坛徽章:
17
2015年辞旧岁徽章
日期:2015-03-03 16:54:152017金鸡报晓
日期:2017-02-08 10:39:422017金鸡报晓
日期:2017-01-10 15:19:56JAVA
日期:2016-11-01 13:25:46C
日期:2016-10-25 16:01:4715-16赛季CBA联赛之八一
日期:2016-06-21 23:38:0815-16赛季CBA联赛之山东
日期:2016-05-12 12:49:54IT运维版块每日发帖之星
日期:2016-04-20 06:20:00IT运维版块每日发帖之星
日期:2016-03-22 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13IT运维版块每日发帖之星
日期:2015-08-25 06:20:002015亚冠之德黑兰石油
日期:2015-08-22 22:55:54
7 [报告]
发表于 2009-09-17 14:22 |只看该作者
谢谢各位回答

再问下
1。怎样才能知道,什么时候用什末库呢?

2。libcurses.a与libcurses.so有什么区别呢?

3。下面简单例子在编译时为什么不用指定库呢?直接gcc -o test test.c
cat test.c
#include <stdio.h>
void p() {
        printf("hello world!\n");
}
main() {
        p();
}

4。怎样使用代码标签呢?

论坛徽章:
0
8 [报告]
发表于 2009-09-17 16:30 |只看该作者
原帖由 ccjsj1 于 2009-9-17 14:22 发表
1。怎样才能知道,什么时候用什末库呢?

2。libcurses.a与libcurses.so有什么区别呢?

3。下面简单例子在编译时为什么不用指定库呢?直接gcc -o test test.c
cat test.c
#include <stdio.h>
void p() {
        printf("hello world!\n");
}
main() {
        p();
}

4。怎样使用代码标签呢?


1. 应该问问自己是从什么地方得知这个函数的,以后再听说什么函数,别忘了问一句“这个函数不在标准库里面吧?”
2. .a是静态库, .so是动态库,连接时机不同
3. 标准库可以不用手动声明
4. [code]...代码...[/code]

论坛徽章:
17
2015年辞旧岁徽章
日期:2015-03-03 16:54:152017金鸡报晓
日期:2017-02-08 10:39:422017金鸡报晓
日期:2017-01-10 15:19:56JAVA
日期:2016-11-01 13:25:46C
日期:2016-10-25 16:01:4715-16赛季CBA联赛之八一
日期:2016-06-21 23:38:0815-16赛季CBA联赛之山东
日期:2016-05-12 12:49:54IT运维版块每日发帖之星
日期:2016-04-20 06:20:00IT运维版块每日发帖之星
日期:2016-03-22 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13IT运维版块每日发帖之星
日期:2015-08-25 06:20:002015亚冠之德黑兰石油
日期:2015-08-22 22:55:54
9 [报告]
发表于 2009-09-18 09:22 |只看该作者

回复 #8 JohnBull 的帖子

好的,明白了   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP