forked from scheduler-tools/rt-app
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README.in
136 lines (94 loc) · 3.68 KB
/
README.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
README for rt-app @VERSION@
==============
INTRODUCTION
==============
rt-app is a test application that starts multiple periodic threads in order to
simulate a real-time periodic load.
Code is currently maintained on GitHub:
http://github.com/scheduler-tools/rt-app
==============
REQUIREMENTS
==============
rt-app runs on GNU/Linux. It needs bash, autoconf, automake, libtool,
libjson-c, GNU make and a recent compiler (tested on: gcc) for basic features.
If your system has numactl (libnuma-dev) installed, numa features will be supported.
=================
BUILDING json-c
=================
If you are not happy using the version installed by your packaging system,
if it does not provide static libraries and you need them, need to
cross-compile, build it from source like this:
retrieve source code available here:
https://github.com/json-c/json-c
cross-compile json-c and build both static and shared libraries for aarch64:
export ac_cv_func_malloc_0_nonnull=yes
export ac_cv_func_realloc_0_nonnull=yes
./autogen.sh
./configure --host=aarch64-linux-gnu --enable-shared --enable-static
make
=================
BUILDING numactl
=================
If you are not happy using the version installed by your packaging system,
if it does not provide static libraries and you need them, need to
cross-compile, build it from source like this:
retrieve source code available here:
git clone https://github.com/numactl/numactl.git
cross-compile numactl and build static libraries for aarch64:
./autogen.sh
./configure --host=aarch64-linux-gnu --disable-shared --enable-static
make
================================
BUILDING AND INSTALLING rt-app
================================
VARIANT A)
cross-compile a static rt-app for aarch64, using your own json-c and/or numactl build
----------------------------------------------------------------------
(...that wasn't installed (or not into the standard locations))
export ac_cv_lib_json_c_json_object_from_file=yes
export ac_cv_lib_numa_numa_available=yes
./autogen.sh
./configure --host=aarch64-linux-gnu LDFLAGS="-L<absolute path to json repo> -L<absolute path to numactl repo>" CFLAGS="-I<path to parent of json-c repo> -I<path to parent of numactl repo>"
AM_LDFLAGS="-all-static" make
configure supports the usual flags, like `--help` and `--prefix`, there is an
install target in the Makefile as well.
EXAMPLE: with a directory structure like the following:
$ tree -d -L 2
.
├── json-c
│ ├── autoconf-archive
│ ├── cmake
│ ├── fuzz
│ └── tests
├── numactl
│ ├── m4
│ └── test
└── rt-app
├── doc
├── libdl
└── src
you would run:
cd rt-app
export ac_cv_lib_json_c_json_object_from_file=yes
export ac_cv_lib_numa_numa_available=yes
./autogen.sh
./configure --host=aarch64-linux-gnu LDFLAGS="-L$PWD/../json-c -L$PWD/../numactl" CFLAGS="-I$PWD/../"
AM_LDFLAGS="-all-static" make
and you should get a static rt-app executable in the src directory.
VARIANT B)
regular build of rt-app for your host against json-c in canonical locations
---------------------------------------------------------------------------
(and installation with PREFIX=/usr/local)
./autogen.sh
./configure
make
make install
=======
USAGE
=======
$ rt-app [-l <log level>] <config_file>
where config file is a full/relative path to a json file (look under
doc/examples for examples) or "-" (without quotes) to read JSON data from
stdin.
Refer to file doc/tutorial.txt for information about how to write the json
file.