Ich bin ein Anfänger Entwickler auf OS X. Wenn ich ein Projekt mit einem Makefile kompilieren, gibt es einen Fehler, den ich nicht lösen kann. Aber ich kann dieses Projekt unter Ubuntu16.04 erfolgreich ausführen, aber nicht, wenn ich es auf Mac verschiebe.Bibliothek nicht gefunden für -lncurses auf OS X-Terminal
Dies ist der Terminal Druck:
currychen-MC1:llvm-clang-iMac currychen$ make
g++ -I/usr/include -fno-rtti -O0 -g `/Users/currychen/llvm/llvm3.8-binaries/bin/llvm-config --cxxflags` -I/Users/currychen/llvm/tools/clang/include -I/Users/currychen/llvm/llvm3.8-binaries/tools/clang/include src_clang/rewritersample.cp -lclangAST -lclangAnalysis -lclangBasic -lclangDriver -lclangEdit -lclangFrontend -lclangFrontendTool -lclangLex -lclangParse -lclangSema -lclangEdit -lclangASTMatchers -lclangRewrite -lclangRewriteFrontend -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangSerialization -lclangToolingCore -lclangTooling `/Users/currychen/llvm/llvm3.8-binaries/bin/llvm-config --ldflags --libs --system-libs` -o build/rewritersample
clang: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk'
ld: library not found for -lcurses
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [build/rewritersample] Error 1"
und mein Makefile ist
LLVM_SRC_PATH := /Users/currychen/llvm
LLVM_BUILD_PATH := /Users/currychen/llvm/llvm3.8-binaries
LLVM_BIN_PATH := $(LLVM_BUILD_PATH)/bin
CXX := g++ -I/usr/include
CXXFLAGS := -fno-rtti -O0 -g
LLVM_CXXFLAGS := `$(LLVM_BIN_PATH)/llvm-config --cxxflags`
LLVM_LDFLAGS := `$(LLVM_BIN_PATH)/llvm-config --ldflags --libs --system-libs`
LLVM_LDFLAGS_NOLIBS := `$(LLVM_BIN_PATH)/llvm-config --ldflags`
CLANG_INCLUDES := \
-I$(LLVM_SRC_PATH)/tools/clang/include \
-I$(LLVM_BUILD_PATH)/tools/clang/include
CLANG_LIBS := \
-lclangAST \
-lclangAnalysis \
-lclangBasic \
-lclangDriver \
-lclangEdit \
-lclangFrontend \
-lclangFrontendTool \
-lclangLex \
-lclangParse \
-lclangSema \
-lclangEdit \
-lclangASTMatchers \
-lclangRewrite \
-lclangRewriteFrontend \
-lclangStaticAnalyzerFrontend \
-lclangStaticAnalyzerCheckers \
-lclangStaticAnalyzerCore \
-lclangSerialization \
-lclangToolingCore \
-lclangTooling
SRC_CLANG_DIR := src_clang
BUILDDIR := build
$(BUILDDIR)/rewritersample: $(SRC_CLANG_DIR)/rewritersample.cp
$(CXX) $(CXXFLAGS) $(LLVM_CXXFLAGS) $(CLANG_INCLUDES) $^ $(CLANG_LIBS) $(LLVM_LDFLAGS) -o [email protected]
.PHONY: clean
clean:
-rm -rf $(BUILDDIR)/*
Auf meinem Mac kann ich 'ls/usr/lib/lib * curse *' ausführen und die Liste abrufen: '/ usr/lib/libcurses.dylib','/usr/lib/libncurses.5.4.dylib' , '/ usr/lib/libncurses.5.dylib','/usr/lib/libncurses.dylib'. Was bekommst du? –
Fügen Sie Ihrer Kompilierzeile ein '-v' hinzu und sehen Sie, welche Flags wirklich verwendet werden, und finden Sie heraus, warum'/usr/lib' nicht auf der Liste steht. OS X enthält standardmäßig Flüche. –
Wenn ich ls/usr/lib/lib * curse * ausführen, kann ich die Liste/usr/lib/libcurses.dylib \t /usr/lib/libncurses.5.dylib /usr/lib/libncurses.5.4.dylib abrufen \t /usr/lib/libncurses.dylib – CurryChen