首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何链接jsoncpp?

如何链接jsoncpp?
EN

Stack Overflow用户
提问于 2011-02-10 04:47:24
回答 3查看 8K关注 0票数 5

如何使用g++将jsoncpp与C++程序链接?我试过了:

代码语言:javascript
复制
g++ -o program program.cpp -L/path/to/library/files -ljsoncpp, -ljson, -llibjsoncpp

但g++一直在说:

代码语言:javascript
复制
/usr/bin/ld: cannot find -lsomething
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-10 04:52:26

/path/to/library/files中查看您的*.a文件的实际名称。在我的系统上,我链接到:

代码语言:javascript
复制
-ljson_linux-gcc-4.4.3_libmt

有些库会为您创建从lib<name>.alib<name>-<version>.a的链接,但我不认为jsoncpp会自动完成此操作。因此,您需要在链接时指定完整名称。

票数 3
EN

Stack Overflow用户

发布于 2011-06-11 05:00:24

您还可以尝试使用新的合并版本的jsoncpp,该版本是从版本0.6.0开始的新版本。

合并版本允许您使用jsoncpp,只需在项目中添加一个目录,其中包含两个头文件和一个.cpp文件。然后,您可以直接将jsoncpp编译到您的程序中,而不必担心必须链接到任何jsoncpp库。

票数 5
EN

Stack Overflow用户

发布于 2018-09-11 16:33:23

您基本上需要告诉路径和库。

jsoncpp库具有pkg-config,您可以使用以下命令

代码语言:javascript
复制
`pkg-config --cflags path/to/jsoncpp/build/pkg-config/jsoncpp.pc`

对于包含路径和

代码语言:javascript
复制
`pkg-config --libs ../jsoncpp/build/pkg-config/jsoncpp.pc`

对于链接(使用g++运行命令时,请使用)。要查看单个命令,即-L/libraryPath -ljsoncpp),请在不使用的终端中运行上述命令。

在Makefile中使用这些命令会更容易。例如,我的Makefile是:

代码语言:javascript
复制
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。最终命令将在终端中打印出来

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4950265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档