如何解决:未定义引用`std :: filesystem :: __ cxx11 :: directory_iterator :: operator *()const'

时间:2018-12-26 18:56:41

标签: makefile filesystems c++17 gcc8

在编译期间,链接器出现问题:
未定义对`std :: filesystem :: __ cxx11 :: directory_iterator :: operator *()const的引用'
整个都在Raspberry pi上。我已经根据以下说明安装了gcc 8.1.0: Click it
在makefile中,我正在使用-lstdc ++ fs标志
我还尝试通过以下方式指向lib目录:

  

LIBS = -L / usr / local / gcc-8.1.0 / lib -lstdc ++ fs -lmariadbclient -lpthread -lrt -lwiringPi

由于某种原因,链接器似乎看不到libstdc ++ fs.a文件,但我的构想已耗尽。

MAKEFILE:

IDIR =/usr/include/mysql/
CC=c++-8.1.0
CFLAGS=-I$(IDIR) -std=c++17
CPPFLAGS=$(CFLAGS)

ODIR=../obj/
BDIR=../bin/
...
SRCS+= node1Wire.cpp
...

LIBS= -lstdc++fs -lmariadbclient -lpthread -lrt -lwiringPi

OBJS=$(patsubst %.cpp,$(ODIR)%.o,$(SRCS))

prebuild:
    @mkdir -p -v $(ODIR) $(BDIR)

iHouzz: prebuild $(OBJS)
    $(CC) $(CPPFLAGS) $(LIBS) -o $(BDIR)iHouzz $(OBJS)

$(ODIR)%.o: %.cpp
    $(CC) $(CPPFLAGS) $(LIBS) -c -o $(ODIR)$(subst .cpp,.o,$<) $<

all: iHouzz

.PHONY: clean all

clean:
    rm -f $(ODIR)* $(BDIR)*

要编译的代码:

 path += ONEWIRE_SLAVE_DIR;

 for(auto& p: fs::directory_iterator(path))
        std::cout << p.path() << '\n';

0 个答案:

没有答案
相关问题