我正在尝试用C++创建一个利用rudeconfig库的程序。
我运行make,得到以下结果:
g++ -o Homework5_executable helloworld.o -lrudeconfig -L/home/j/je/jea160530/hw5/libs
/bin/ld: cannot find -lrudeconfig
collect2: error: ld returned 1 exit status
make: *** [Homework5_executable] Error 1
我知道这是因为make无法识别rudeconfig库,但是我已经按照rudeconfig站点上的说明进行了正确安装。
代码如下:
生成文件
CXX = g++
CXXFLAGS = -Wall
CPPFLAGS = -I/home/012/j/je/jea160530/hw5/include
LDFLAGS = -L/home/012/j/je/jea160530/hw5/libs
LDLIBS = -lrudeconfig
PROJECTNAME = JesseAlotto_Homework5
SRCS = helloworld.cc
EXEC = Homework5_executable
OBJS = $(SRCS:cc=o)
all: $(EXEC)
clean:
rm -f $(OBJS) *.d *~ \
Makefile: $(SRCS:.cc=.d)
%.d:%.cc
@echo Updating .d Dependency File
@set -e; rm -f $@; \
$(CXX) -MM $(CPPFLAGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
$(EXEC): $(OBJS)
$(CXX) -o $(EXEC) $(OBJS) $(LDFLAGS) $(LDLIBS)
@echo Program compiled succesfully!
backup: clean
@mkdir -p ~/backups; chmod 700 ~/backups
@$(eval CURDIRNAME := $(bash pwd))
@$(eval MKBKUPNAME := ~/backups/$(PROJECTNAME)-$(shell date +'%Y.%m.%d-%H:%M:%S').tar.gz)
@echo
@echo Writing Backup file to: $(MKBKUPNAME)
@echo
@tar -zcvf $(MKBKUPNAME) ./$(CURDIRNAME)
@chmod 600 $(MKBKUPNAME)
@echo
@echo Done!
-include $(SRCS:.cc=.d)
你好世界抄送
#include <string>
#include <iostream>
#include <fstream>
#include <tclap/CmdLine.h>
#include <map>
#include <stdlib.h>
#include <rude/config.h>
using namespace rude;
int main(int argc, char *argv[]){
std::string nextLine;
std::map<int, std::string> optionMap;
try{
std::cout << "hello world!";
TCLAP::CmdLine cmd("CS3377.002 Program 5", ' ', "1.0");
TCLAP::SwitchArg daemonSwitch("d", "daemon", "Run in daemon mode (forks to run as a daemon).", cmd, false);
TCLAP::UnlabeledValueArg<std::string> infileArg("infile", "The name of the configuration file. Defaults to cs3376dirmond.conf", true, "cs3376dirmond.conf", "config filename", false);
cmd.add(infileArg);
cmd.parse(argc, argv);
enum flags {DAEMON, INFILE};
if (daemonSwitch.getValue()){
optionMap[DAEMON] = "1";
}
else{
optionMap[DAEMON] = "0";
}
optionMap[INFILE] = infileArg.getValue();
std::ifstream inputFile;
inputFile.open(optionMap[INFILE].c_str(), std::ios::in);
if(!inputFile){
std::cerr << "Error: no input file" << std::endl;
}
Config config;
config.load("cs3376dirmond.conf");
inputFile.close();
return 0;
} catch (TCLAP::ArgException &e)
{ std::cerr << "error: " << e.error() << " for arg " << e.argId() << std::endl;}
}