小弟的这个文件make一下,它提示
root@person:/home/luchen/mytext# make
gcc -o prime prime.c
prime.c: In function ‘main’:
prime.c:12: warning: return type of ‘main’ is not ‘int’
prime.c:68:3: warning: no newline at end of file
/tmp/cca79Qmv.o: In function `prime':
prime.c:(.text+0xb6): undefined reference to `sqrt'
prime.c:(.text+0xd3): undefined reference to `sqrt'
prime.c:(.text+0x144): undefined reference to `sqrt'
collect2: ld returned 1 exit status
make: *** [prime] Error 1
竟然找不到sqrt对应的math.h.但是在/usr/include/下明明有这个头文件,但是就是不识别,晕,请问我该咋办?
[问题]关于头文件连接的问题
-
- 帖子: 52
- 注册时间: 2007-07-16 18:40
- 来自: 浙江
-
- 帖子: 89
- 注册时间: 2006-03-19 18:25
- 来自: FZ->TJ->PEK->AMS->MTL
- madoldman
- 帖子: 599
- 注册时间: 2006-02-27 20:19
- 来自: works system
- 联系:
-
- 帖子: 89
- 注册时间: 2006-03-19 18:25
- 来自: FZ->TJ->PEK->AMS->MTL
-
- 帖子: 52
- 注册时间: 2007-07-16 18:40
- 来自: 浙江
-
- 帖子: 136
- 注册时间: 2006-10-30 11:23
- 猛将兄
- 帖子: 2052
- 注册时间: 2005-10-19 17:33
Linux下面编译和连接和windows下面以及和所有现代OS下面的编译和连接都没有区别啊。。。。。。
计算机以及相关专业,对这些应该讲的很详细了,但是的确考试不大会考这些的,反正我们当时不考。
我在这里没办法和你讲太详细编译,连接的过程,而编译原理教材,也过于注重语意解析的算法,而没有太多实际的例子。我大概说一下,大家补充
编译(compile),其实仅仅是将计算机语言翻译成目标代码的过程,而要从目标代码再到可执行文件,必须经过连接(link)才行。
h文件,仅仅是告诉你的编译器,我有一个这么样签名的函数,你需要给我留出多少位置来容纳我。而并没有说,我具体在做什么。
而到连接的过程,连接器会去找,这么一个函数他是在你自己写的源代码里面(在上一步编译的时候,已经被编译成了目标代码)还是在系统的其他库里面。如果是在系统的其他库里面,那么连接器会在生成的可执行文件中详细指出这个函数要从哪个库文件里面load,以方便可执行文件最后被执行的时候,系统能正确地调用该函数。
对于楼主的问题,gcc里面指定库是用-l,比如math库,在linux里面是libm.so
那么楼主应该
gcc -o prime -lm prime.c
最后强调一遍,连接的不是头文件,而是库。库分动态链接库和静态链接库,我不继续讲了,楼主要学会自己学习
计算机以及相关专业,对这些应该讲的很详细了,但是的确考试不大会考这些的,反正我们当时不考。
我在这里没办法和你讲太详细编译,连接的过程,而编译原理教材,也过于注重语意解析的算法,而没有太多实际的例子。我大概说一下,大家补充
编译(compile),其实仅仅是将计算机语言翻译成目标代码的过程,而要从目标代码再到可执行文件,必须经过连接(link)才行。
h文件,仅仅是告诉你的编译器,我有一个这么样签名的函数,你需要给我留出多少位置来容纳我。而并没有说,我具体在做什么。
而到连接的过程,连接器会去找,这么一个函数他是在你自己写的源代码里面(在上一步编译的时候,已经被编译成了目标代码)还是在系统的其他库里面。如果是在系统的其他库里面,那么连接器会在生成的可执行文件中详细指出这个函数要从哪个库文件里面load,以方便可执行文件最后被执行的时候,系统能正确地调用该函数。
对于楼主的问题,gcc里面指定库是用-l,比如math库,在linux里面是libm.so
那么楼主应该
gcc -o prime -lm prime.c
最后强调一遍,连接的不是头文件,而是库。库分动态链接库和静态链接库,我不继续讲了,楼主要学会自己学习
- madoldman
- 帖子: 599
- 注册时间: 2006-02-27 20:19
- 来自: works system
- 联系: