【发布时间】:2018-03-25 03:18:59
【问题描述】:
我目前正在编写一个用于 uni 评估的程序,并且他们有一个固定的行来编译它,所以如果它不能正常工作,它将不会被接受。 他们使用的命令是
gcc -Wall -ansi -lm program.c -o program.out
我的程序不会这样编译,它会给我一个未定义的引用错误(使用 math.h 库引用我的 log10) 如果我使用:
gcc -Wall -ansi program.c -o program.out -lm
有效
我的问题可能是什么?
我使用的是 windows 10 64bit 并安装了 windows bash 和 gcc。
【问题讨论】:
-
gcc 编译器的版本是多少?
-
这与 GCC 的行为一致,至少,对我来说,它只会将任何给定编译单元(例如,从
program.c创建的目标文件)中的名称解析为稍后的地址编译单元(如libm.a,或者在Windows 上是m.lib?)。所以我很惊讶你的大学期望编译在源文件之前使用-lm。 -
我正在使用 gcc 5.4.0!是的,虽然我也一样,但我不知道该怎么做.. 除非有一些工作可以让它工作!
-
@DavidZ:这不是它的工作原理——库是按顺序解析的,但目标文件不是。