如何使用g ++将jsoncpp与C ++程序链接?我试过了:
g++ -o program program.cpp -L/path/to/library/files -ljsoncpp, -ljson, -llibjsoncpp
但g ++一直在说:
/usr/bin/ld: cannot find -lsomething
答案 0 :(得分:5)
你也可以尝试使用新的Amalgamated版本的jsoncpp,这是0.6.0版本的新版本。
Amalgamated版本允许您通过向项目添加一个带有几个头文件和一个.cpp文件的目录来使用jsoncpp。然后,您可以直接将jsoncpp编译到您的程序中,而无需担心必须链接到任何jsoncpp库。
答案 1 :(得分:3)
查看/path/to/library/files
以查看您的*.a
文件的确名称。在我的系统上,我链接:
-ljson_linux-gcc-4.4.3_libmt
有些库会为您创建从lib<name>.a
到lib<name>-<version>.a
的链接,但我不认为jsoncpp会自动执行此操作。因此,您需要在链接时指定完整名称。
答案 2 :(得分:0)
您基本上需要告诉路径和库。
jsoncpp
库具有pkg-config
,您可以使用命令
`pkg-config --cflags path/to/jsoncpp/build/pkg-config/jsoncpp.pc`
包含路径和
`pkg-config --libs ../jsoncpp/build/pkg-config/jsoncpp.pc`
用于链接(在g ++中运行命令时,请使用)。要查看
-L/libraryPath -ljsoncpp
的单个命令,请在终端中运行上面没有“。”的命令。
在Makefile中使用此命令更容易。例如,我的Makefile
是:
CXX = g++
CXXFLAGS = -std=c++11
INC_PATH = `pkg-config --cflags ../jsoncpp/build/pkg-config/jsoncpp.pc`
LIBS = `pkg-config --libs ../jsoncpp/build/pkg-config/jsoncpp.pc`
SOURCES := $(wildcard *.cpp)
OBJDIR=obj
OBJECTS := $(patsubst %.cpp,$(OBJDIR)/%.o,$(SOURCES))
DEPENDS := $(patsubst %.cpp,$(OBJDIR)/%.d,$(SOURCES))
# ADD MORE WARNINGS!
WARNING := -Wall -Wextra
# .PHONY means these rules get executed even if
# files of those names exist.
.PHONY: all clean
# The first rule is the default, ie. "make",
# "make all" and "make parking" mean the same
all: yourProjectExecutableName
clean:
$(RM) $(OBJECTS) $(DEPENDS) parking
# Linking the executable from the object files
yourProjectExecutableName: $(OBJECTS)
$(CXX) $(WARNING) $(CXXFLAGS) $(INC_PATH) $^ -o $@ $(LIBS)
-include $(DEPENDS)
$(OBJDIR):
mkdir -p $(OBJDIR)
$(OBJDIR)/%.o: %.cpp Makefile $(OBJDIR)
$(CXX) $(WARNING) $(CXXFLAGS) $(INC_PATH) -MMD -MP -c $< -o $@
,然后在文件目录中运行make
。最终命令将在终端中打印出来