在编译期间,链接器出现问题:
未定义对`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';