usnistgov / SP800-90B_EntropyAssessment

The SP800-90B_EntropyAssessment C++package implements the min-entropy assessment methods included in Special Publication 800-90B.
195 stars 88 forks source link

json.h not found when building #234

Closed droidpen closed 2 months ago

droidpen commented 2 months ago

Using ubuntu VM.

cat /etc/lsb_release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"

When i was building with a plain make, i got this error: ====error start===== g++ -std=c++11 -fopenmp -O2 -ffloat-store -I/usr/include/jsoncpp -msse2 -march=native iid_main.cpp -o ea_iid -lbz2 -lpthread -ldivsufsort -ldivsufsort64 -ljsoncpp -lcrypto In file included from shared/utils.h:25, from iid_main.cpp:4: shared/test_run_base.h:6:10: fatal error: json/json.h: No such file or directory 6 | #include <json/json.h> | ^~~~~ compilation terminated. make: *** [Makefile:30: iid_main.o] Error 1 =====error end======

There is a -I/usr/include/jsoncpp I looked into /usr/include/ and there isn't any folder named "jsoncpp".

Then i found this forum suggesting to install libjsoncpp-dev: https://github.com/stardust95/TinyCompiler/issues/2 sudo apt-get install libjsoncpp-dev

Then /usr/include/jsoncpp is installed.

Thereafter the build is able to complete. Selftest appear to pass also.

Not sure if libjsoncpp-dev is also a pre-requisite for building. Please evaluate. Thanks!

joshuaehill commented 2 months ago

There are a few packages required. From the README file:

The resulting binary is linked with bzlib, divsufsort, jsoncpp, GMP MP and GNU MPFR, so these libraries (and their associated include files) must be installed and accessible to the compiler.

On Ubuntu they can be installed with apt-get install libbz2-dev libdivsufsort-dev libjsoncpp-dev libssl-dev libmpfr-dev.

If this addresses your question, please close this issue. Thanks!

droidpen commented 2 months ago

My bad, i missed this liner and focused too much on the wiki instead. Thanks for pointing out!