5

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

g++ -o program program.cpp -L/path/to/library/files -ljsoncpp, -ljson, -llibjsoncpp

但是 g++ 一直在说:

/usr/bin/ld: cannot find -lsomething
4

3 回答 3

5

您还可以尝试使用新的合并版本的 jsoncpp,它是 0.6.0 版的新版本。

Amalgamated 版本允许您通过向项目中添加一个包含几个头文件和一个 .cpp 文件的目录来使用 jsoncpp。然后,您可以直接将 jsoncpp 编译到您的程序中,而不必担心必须链接到任何 jsoncpp 库。

于 2011-06-10T21:00:23.960 回答
3

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

-ljson_linux-gcc-4.4.3_libmt

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

于 2011-02-09T20:52:25.860 回答
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。最终命令将在终端中打印出来

于 2018-09-11T08:33:22.910 回答