-
Notifications
You must be signed in to change notification settings - Fork 85
Compiling
Before forking and cloning nvmecompliance to a local system, the hosting environment should be created. The following Linux environment, or an equivalent one, should be created to host the compliance suite.
A 64 bit Linux distribution:
* Linux 2.6.35-30-server #56-Ubuntu SMP Mon Jul 11 21:37:42 UTC 2011 x86_64 GNU/Linux
* 32 bit distributions are not recommended since a compliance suite, to be effective, will need to test 64 bit accesses
Install boost libraries
* v/1.42
Install doxygen
* v/1.7.1
The Linux make system is utilized with a default target to allow compiling the dnvme. Other targets of interest are as follows:
clean (don't use sudo)
* removes object files
* removes intermediate output files
clobber
* removes doxygen generated documentation
* removes log files produced by tnvme
* removes RPM package manager produced files
doc
* Creates doxygen HTML output files from the source code files
rpm
* Create RPM package manager files to allow installing tnvme to a target system
Anything related to the kernel is declared in headers found in the kernel source tree that you should have set up and configured in /usr/src/. First step is to download the required headers preferably using synaptic package manager and making sure that you have sudo permissions to compile and this should work. Generally you **should not do **'sudo make clean'. If you do this then it will wipe out required files from your src linux-headers and you will get compilation errors which can be resolved if you again download the headers using synaptic package manager.
Makefile uses two flags -DDEBUG and -DQEMU.
-
DEBUG flag is used to get syslogs useful for debugging.
-
QEMU flag should be used when the underlying device under test is not an actual hardware but an emulated hardware using QEMU. This flag converts 64 bits reads/writes to register space of the emulated NVME device into two 32 bit reads/writes respectivley, since the version of QEMU against which the driver was developed does not support 64 bit reads/writes. If your underlying device is an actual hardware then this flag should not be used.