mirror of
https://github.com/json-c/json-c.git
synced 2026-03-22 06:29:06 +08:00
311686f63ed26e510c50808977c31883fe7bc23d
The -Bsymbolic-functions linker flag reduces the amount of PLT jumps in a shared object, and has a side effect of preventing symbol collisions in libraries and applications linking against two different shared objects exposing the same symbol. While the former is (generally) a performance win, the latter is less rare than expected. For instance, PulseAudio started linking against json-c a while ago; now, every project linking against PulseAudio is leaking json-c symbols. In the GNOME platform, this means that projects linking against PulseAudio cannot be safely linked against other libraries depending on the GLib-based JSON parsing libraries JSON-GLib, because of a symbol conflict. Nominally, this conflict would not be an issue: libraries and applications do not need to depend on two different JSON parsing libraries; the symbol leakage, though, ends up causing either segmentation faults, or weird errors. For further reference, please see: https://bugzilla.gnome.org/show_bug.cgi?id=703734 JSON-GLib already switched to using -Bsymbolic-functions, but it would be safe if json-c did the same, wherever the linker flag is available.
Issue #59: change the floating point output format to %.17g so values with more than 6 digits show up in the output.
Issue #15: add a way to set a JSON_TOKENER_STRICT flag to forbid commas at the end of arrays and objects.
Issue #68: use -std=gnu99 because some versions of gcc seem to think that -std=c99 also implies -ansi, which causes warnings and build breakage.
Building on Unix with git, gcc and autotools
Home page for json-c:
https://github.com/json-c/json-c/wiki
Caution: do NOT use sources from svn.metaparadigm.com, they are old.
Prerequisites:
gcc (or another C compiler)
libtool
If you're not using a release tarball, you'll also need:
autoconf (autoreconf)
automake
Make sure you have a complete libtool install, including libtoolize
Github repo for json-c:
https://github.com/json-c/json-c
$ git clone https://github.com/json-c/json-c.git
$ cd json-c
$ sh autogen.sh
Then
$ ./configure
$ make
$ make install
To build and run the test programs run
$ make check
Linking to libjson-c
If your system has pkgconfig then you can just add this to your makefile
CFLAGS += $(shell pkg-config --cflags json-c)
LDFLAGS += $(shell pkg-config --libs json-c)
Without pkgconfig, you would do something like this:
JSON_C_DIR=/path/to/json_c/install
CFLAGS += -I$(JSON_C_DIR)/include/json-c
LDFLAGS+= -L$(JSON_C_DIR)/lib -ljson-c
Description
https://github.com/json-c/json-c is the official code repository for json-c. See the wiki for release tarballs for download. API docs at http://json-c.github.io/json-c/
Readme
5.7 MiB
Languages
C
86.8%
CMake
6.1%
Shell
3.4%
Meson
2.5%
C++
0.9%
Other
0.3%