linux – 编译时出错::: strcmp尚未声明
发布时间:2020-12-14 00:34:22 所属栏目:Linux 来源:网络整理
导读:我正在使用一个名为supersense tagger的软件,我有一个粘贴在下面的makefile. #Makefile for sst-light CXX = g++ CFLAGS = -g -O1 -DPIC -fPIC -ILIB -I. CXXFLAGS = $(CFLAGS) -fno-exceptions #CXXFLAGS = -g #LIB = -lm ${TAO_LIB} ${PETSC_SNES_LIB} #in
我正在使用一个名为supersense tagger的软件,我有一个粘贴在下面的makefile.
#Makefile for sst-light CXX = g++ CFLAGS = -g -O1 -DPIC -fPIC -ILIB -I. CXXFLAGS = $(CFLAGS) -fno-exceptions #CXXFLAGS = -g #LIB = -lm ${TAO_LIB} ${PETSC_SNES_LIB} #include ${TAO_DIR}/bmake/tao_common SOURCES = sst-light.cc LIB/utils/utils.cc LIB/stats/stats.cc LIB/results/results.cc LIB/evaluate/evaluate.cc LIB/Chain/Chain.cc LIB/Perceptron/Perceptron.cc LIB/tagger_light/Tlight.cc LIB/examples/examples.cc LIB/features/features.cc MLIBOBJECTS = LIB/utils/utils.o LIB/stats/stats.o LIB/results/results.o LIB/evaluate/evaluate.o LIB/Chain/Chain.o LIB/Perceptron/Perceptron.o LIB/tagger_light/Tlight.o LIB/examples/examples.o LIB/features/features.o OBJECTS = sst-light.o LIB/utils/utils.o LIB/stats/stats.o LIB/results/results.o LIB/evaluate/evaluate.o LIB/Chain/Chain.o LIB/Perceptron/Perceptron.o LIB/tagger_light/Tlight.o LIB/examples/examples.o LIB/features/features.o # # /usr/local/WordNet-2.1/lib/libWN.a PEROBJ = Perceptron/Perceptron.o Perceptron/Kernel_Perceptron.o CRFOBJ = CRF/CRF.o SuperSenseTagger: $(OBJECTS) g++ $(OBJECTS) -o sst videotagger: $(MLIBOBJECTS) videotagger.o g++ $(MLIBOBJECTS) videotagger.o -o videotagger to-conll: to-conll.o g++ to-conll.o -o to-conll libwnss.so: $(MLIBOBJECTS) g++ -shared -o libwnss.so $(MLIBOBJECTS) -lm -lpthread -lc -lstdc++ -lgcc_s .PHONY: clean clean: find . -name '*.[od]' -print -exec rm {} ; clean_bak: find . -name '*~' -print -exec rm {} ; # this command tells GNU make to look for dependencies in *.d files -include $(patsubst %.c,%.d,$(SOURCES:%.cc=%.d)) 在执行时,我得到以下内容: g++ -g -O1 -DPIC -fPIC -ILIB -I. -fno-exceptions -c -o sst-light.o sst-light.cpp In file included from /usr/include/c++/4.3/ext/hash_map:64,from LIB/examples/../tagger_light/../results/../utils/../hash_stuff/hash_stuff.h:26,from LIB/examples/../tagger_light/../results/../utils/utils.h:31,from LIB/examples/../tagger_light/../results/results.h:29,from LIB/examples/../tagger_light/Tlight.h:29,from LIB/examples/examples.h:19,from sst-light.cpp:21: /usr/include/c++/4.3/backward/backward_warning.h:33:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces,consult the file backward_warning.h. To disable this warning use -Wno-deprecated. In file included from LIB/examples/../tagger_light/../results/../utils/utils.h:31,from sst-light.cpp:21: LIB/examples/../tagger_light/../results/../utils/../hash_stuff/hash_stuff.h: In member function abool std::equal_to<const char*>::operator()(const char*,const char*) consta: LIB/examples/../tagger_light/../results/../utils/../hash_stuff/hash_stuff.h:44: error: a::strcmpa has not been declared make: *** [sst-light.o] Error 1 任何人都有任何想法可能导致这个? 解决方法
是的 – gcc已经更新了他们的编译器,它不是’默认包括’它用于旧版本的一些头文件 – 您使用的代码尚未更新以反映这一点.
看起来你需要在sst-light.cpp中为strcmp添加include #include <cstring> 此外,它看起来代码使用的是旧式的C include – 所以改变之类的东西 #include <iostream.h> 至 #include <iostream> 但只对C头文件执行此操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |