Неопределенная ссылка на все, при использовании libm

У меня есть программа, использующая стандартную математическую функцию в C ++. На моем Mac он прекрасно работает, используя clang, и даже без использования -lm. Однако в Ubuntu, также используя clang, после добавления -lm в мою командную строку я получаю неопределенную ссылку на ВСЕ. Я имею в виду буквально все.

Мой 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 $@ $<

-1

Решение

Согласно комментариям, при компиляции C ++ вам нужно использовать правильный компилятор. clang++ для C ++.

Часто компиляторы C и C ++ представляют собой одну и ту же базовую программу, но вызывают их, как, например,. clang или clang ++ вызывает их с правильными параметрами для целевого языка.

Скорее всего, ошибки, которые вы видели, были результатом того, что программа не была связана с правильными библиотеками времени выполнения.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]