免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: imonyse
打印 上一主题 下一主题

[函数] [请教]程序包括了math.h头文件,但是编译器找不到acos()函数? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-04-28 23:50 |只看该作者
原帖由 priboy 于 2007-4-28 23:48 发表


是指它属于标准库,默认应该链接而不需要另外指定么?

nod

原帖由 MMMIX 于 2007-4-28 23:49 发表

标准对此有规定么?如果有的话应该早就修正了。

没有。

[ 本帖最后由 antigloss 于 2007-4-28 23:52 编辑 ]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
12 [报告]
发表于 2007-04-29 00:02 |只看该作者
原帖由 imonyse 于 2007-4-28 23:49 发表
惭愧,我的问题应该是对gcc不了解。

不仅仅。
我只知道用cc可以生成那个a.out执行文件,而且我也不明白bash里面打cc和gcc的区别......

在许多 Linux 安装中,cc 就是到 gcc 的一个链接。
声明(statement)和定义(define),编译(compile)和链接(link)的区别我应该是知道的.

既然如此,那么看到 "undefined reference to `acos'" 的错误信息就应该清楚是没有链接对应的库,而使用 printf 等函数又没有问题,那么不难推知标准数学库和标准 I/O 库不在同一个文件中。既然如此,那么标准数学库是什么呢?看看 acos 的手册,至少在我的系统中,其手册中是清楚的表明了要 "Link with -lm." 当然,如果在手册中没有找到这个,可以进一步用其他搜索引擎,例如 google,很容易就可以找到答案。

论坛徽章:
0
13 [报告]
发表于 2007-04-29 07:33 |只看该作者
原帖由 MMMIX 于 2007-4-29 00:02 发表

不仅仅。

在许多 Linux 安装中,cc 就是到 gcc 的一个链接。

既然如此,那么看到 "undefined reference to `acos'" 的错误信息就应该清楚是没有链接对应的库,而使用 printf 等函数又没有问题, ...


我会更谨慎的注意自己描述问题的措辞
也感谢你提出的这种分析思路──再次受教了。

自学c语言真的碰到了不少问题,还希望各位大侠以后不吝赐教 many thanks.

刚刚在CU找到手册了:http://man.chinaunix.net/develop/c&c++/linux_c/default.htm
#还有一个问题,“看acos()的手册”......请问这是指?我的意思是说,能在我的系统中找到类似man page这样的#手册吗?
#
#《GNU C库技术手册》(刚刚搜索到的,眼下我手头没有这样的手册),这样的手册还是需要去买一本或者下载... 因为我在#GOOGLE确实用了关键词:math.h, acos(), cc -lm,...搜索过了,没有看到相关条目的......这样很郁闷

[ 本帖最后由 imonyse 于 2007-4-29 08:27 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2007-04-29 10:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
15 [报告]
发表于 2007-04-29 10:25 |只看该作者
原帖由 imonyse 于 2007-4-29 07:33 发表


我会更谨慎的注意自己描述问题的措辞
也感谢你提出的这种分析思路──再次受教了。

自学c语言真的碰到了不少问题,还希望各位大侠以后不吝赐教 many thanks.

刚刚在CU找到手册了:[url]http://m ...

本机可以安装man手册,不过是英文的
debian linux:
aptitude install manpages-dev manpages-posix-dev

论坛徽章:
0
16 [报告]
发表于 2007-04-29 10:26 |只看该作者
原帖由 MMMIX 于 2007-4-28 23:35 发表
似乎有太多的人分不清楚 C 中声明和定义的区别,也不明白编译和链接的区别。

不仅仅是java闹的,那些IDE把人搞的只知道写程序了~~

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
17 [报告]
发表于 2007-04-29 11:33 |只看该作者
原帖由 imonyse 于 2007-4-29 07:33 发表
因为我在#GOOGLE确实用了关键词:math.h, acos(), cc -lm,...搜索过了,没有看到相关条目的......这样很郁闷

你用错了关键词,例如说我用如下关键词在 google 中搜索:
math.h "undefined reference to"
第一个结果就是。

建议在碰到程序报错的时候直接用报错信息作为关键词进行搜索。

论坛徽章:
0
18 [报告]
发表于 2007-04-29 11:41 |只看该作者
原帖由 xiaomiao 发表

-l*** 一般可以在$LD_LIBRARY_PATH环境变量指定的某个路径下定位到lib***.a静态库文件,比如/usr/lib下的扩展库文件lib***.a等等

多谢指教。

原帖由 cugb_cat 于 2007-4-29 10:25 发表

本机可以安装man手册,不过是英文的
debian linux:
aptitude install manpages-dev manpages-posix-dev


装好了,谢谢!


原帖由 MMMIX 发表
你用错了关键词,例如说我用如下关键词在 google 中搜索:
math.h "undefined reference to"
第一个结果就是。

建议在碰到程序报错的时候直接用报错信息作为关键词进行搜索。


了解,thx.

[ 本帖最后由 imonyse 于 2007-4-29 11:44 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2007-04-29 13:50 |只看该作者
你自定义个头文件 fuck.h

鬼知道你要链接那个库

凭什么不手动指出???

论坛徽章:
0
20 [报告]
发表于 2007-04-29 18:48 |只看该作者
负责寻找 libm 的是连接器,而非编译器
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP