链接器命令失败,带有一堆未定义的引用

时间:2015-06-03 18:30:08

标签: c++ makefile clang clang++ libc++

我尝试使用clang和libc ++编译项目。这是我的makefile:

EXEC = ModularMadness
SRCDIR = src/
INC =-I$(SRCDIR)
SOURCES := $(wildcard $(SRCDIR)*.cpp) $(wildcard $(SRCDIR)*/*.cpp)
OBJECTS = $(SOURCES:.cpp=.o)

CXX = clang++
CXX_FLAGS = -std=c++1y -stdlib=libc++ $(INC)

all: $(EXEC)

$(EXEC): $(OBJECTS)
    $(CXX) $(OBJECTS) -o $(EXEC)

%.o: %.cpp
    $(CXX) -c $(CXX_FLAGS) $< -o $@

.PHONY: all clean

clean:
    @echo Cleaning...
    @rm -f $(EXEC) $(OBJECTS)
    @echo done

.o文件创建工作正常,但我遇到了多个错误 链接器命令期间In function 'std::__1::weak_ptr<module::Module>::lock() const': undefined reference to 'std::__1::__shared_weak_count::lock()'

有人可以帮我理解这里的问题吗?

注意

这个makefile在OS X上运行完美。

1 个答案:

答案 0 :(得分:1)

我错过了链接标记-lc++ ...谢谢perencia

这是工作的makefile:

EXEC = ModularMadness
SRCDIR = src/
INC =-I$(SRCDIR)
SOURCES := $(wildcard $(SRCDIR)*.cpp) $(wildcard $(SRCDIR)*/*.cpp)
OBJECTS = $(SOURCES:.cpp=.o)

CXX = clang++
CXX_FLAGS = -std=c++1y -stdlib=libc++ $(INC)

all: $(EXEC)

$(EXEC): $(OBJECTS)
    $(CXX) $(OBJECTS) -o $(EXEC) -lc++ # Here

%.o: %.cpp
    $(CXX) -c $(CXX_FLAGS) $< -o $@

.PHONY: all clean

clean:
    @echo Cleaning...
    @rm -f $(EXEC) $(OBJECTS)
    @echo done