使用libm时,对一切都存在未定义的引用。
使用libm时,对一切都存在未定义的引用。
我有一个使用C++标准数学函数的程序。在我的Mac上,使用clang可以很好地链接,甚至不需要使用-lm。然而,在Ubuntu上,同样使用clang,在我的命令行中添加了-lm后,我遇到了对EVERYTHING的未定义引用。我的意思是真的每个东西都未定义。
我的Makefile如下:
CC = clang CFLAGS = -fmessage-length=0 -std=c++11 -pipe LDFLAGS = -pipe LDLIBS = -lpng -lpthread -lm OBJS = Colour.o GraphicsLibrary/SimpleVector.o Camera.o Ray.o \ Material.o SceneObject.o Sphere.o Plane.o Polygon.o PolygonPatch.o Cone.o \ Cylinder.o Light.o Scene.o SimpleScene.o BoxedScene.o RTreeScene.o AABB.o Main.o \ AFF/parse.o AFF/texture.o AFF/animation.o AFF/quat.o AFF/kbsplpos.o \ AFF/kbsplrot.o TARGET = straylight ###################### # ------------------ # # Top level targets. # # ------------------ # ###################### all: ${TARGET} clean: rm -v ${OBJS} ${TARGET} debug: ${MAKE} EXTRA_C_FLAGS="-g3 -pg" EXTRA_LD_FLAGS="-g3 -pg" optimized: ${MAKE} EXTRA_C_FLAGS="-O3" EXTRA_LD_FLAGS="-O3" ###################### # ------------------ # # Low level targets. # # ------------------ # ###################### ${TARGET}: ${OBJS} ${CC} ${LDFLAGS} ${EXTRA_LD_FLAGS} -o ${TARGET} $^ ${LDLIBS} %.o: %.C %.h Makefile ${CC} ${CFLAGS} ${EXTRA_C_FLAGS} -c -o $@ $<