我正在尝试在我的程序中包含一个Boost库,但是我在静态链接我的程序时遇到了困难。即使我已将scala> input.map(_.map(_.toString))
res0: List[List[String]] = List(List(1234), List(234, 678), List(8765, 90876, 1))
添加到我的makefile中,我也收到了一堆链接器错误。
例如,在编译期间我得到-L/usr/include/boost/ -lboost_filesystem
我的Boost版本是1.61.0.2,我运行的是Ubuntu 16.10(64位)和gcc版本6.2.0 20161005.我的undefined reference to boost::iostreams::detail::gzip_footer::reset()'
等增强库位于accumulators, algorithms, ...
,所以我的makefile看起来像这样:
/usr/include/boost
我正在尝试编译以下文件(在线找到的示例)
CXX = g++
CXXFLAGS = -static -std=c++11 -Wall
LDFLAGS = -L/usr/include/boost/ -lboost_filesystem
DEPFLAGS = -MM
SRC_DIR = ./src
OBJ_DIR = ./obj
SRC_EXT = .cpp
OBJ_EXT = .o
TARGET = main
SRCS := $(wildcard $(SRC_DIR)/*$(SRC_EXT))
OBJS := $(SRCS:$(SRC_DIR)/%$(SRC_EXT)=$(OBJ_DIR)/%$(OBJ_EXT))
DEP = depend.main
.PHONY: clean all depend
all: $(TARGET)
$(TARGET): $(OBJS)
@echo "-> linking $@"
@$(CXX) $^ $(LDFLAGS) -o $@
$(OBJ_DIR)/%$(OBJ_EXT) : $(SRC_DIR)/%$(SRC_EXT)
@echo "-> compiling $@"
@$(CXX) $(CXXFLAGS) -o $@ -c $<
clean:
@echo "removing objects and main file"
@rm -f $(OBJS) $(TARGET) *.out
$(SRC_DIR)/%.$(SRC_EXT):
$(CXX) $(DEPFLAGS) -MT \
"$(subst $(SRC_DIR),$(OBJ_DIR),$(subst $(SRC_EXT),$(OBJ_EXT),$@))" \
$(addprefix ,$@) >> $(DEP);
clear_dependencies:
@echo "-> (re-)building dependencies";
@$(RM) $(DEP)
depend: clear_dependencies $(SRCS)
-include $(DEP)
答案 0 :(得分:1)
您的程序根本不使用libboost_filesystem
。唯一的
它所依赖的提升库是liboost_iostreams
。