1The cpupower package consists of the following elements: 2 3requirements 4------------ 5 6On x86 pciutils is needed at runtime (-lpci). 7For compilation pciutils-devel (pci/pci.h) and a gcc version 8providing cpuid.h is needed. 9For both it's not explicitly checked for (yet). 10 11 12libcpupower 13---------- 14 15"libcpupower" is a library which offers a unified access method for userspace 16tools and programs to the cpufreq core and drivers in the Linux kernel. This 17allows for code reduction in userspace tools, a clean implementation of 18the interaction to the cpufreq core, and support for both the sysfs and proc 19interfaces [depending on configuration, see below]. 20 21 22compilation and installation 23---------------------------- 24 25There are 2 output directories - one for the build output and another for 26the installation of the build results, that is the utility, library, 27man pages, etc... 28 29default directory 30----------------- 31 32In the case of default directory, build and install process requires no 33additional parameters: 34 35build 36----- 37 38$ make 39 40The output directory for the 'make' command is the current directory and 41its subdirs in the kernel tree: 42tools/power/cpupower 43 44install 45------- 46 47$ sudo make install 48 49'make install' command puts targets to default system dirs: 50 51----------------------------------------------------------------------- 52| Installing file | System dir | 53----------------------------------------------------------------------- 54| libcpupower | /usr/lib | 55----------------------------------------------------------------------- 56| cpupower | /usr/bin | 57----------------------------------------------------------------------- 58| cpufreq-bench_plot.sh | /usr/bin | 59----------------------------------------------------------------------- 60| man pages | /usr/man | 61----------------------------------------------------------------------- 62 63To put it in other words it makes build results available system-wide, 64enabling any user to simply start using it without any additional steps 65 66custom directory 67---------------- 68 69There are 2 make's command-line variables 'O' and 'DESTDIR' that setup 70appropriate dirs: 71'O' - build directory 72'DESTDIR' - installation directory. This variable could also be setup in 73the 'CONFIGURATION' block of the "Makefile" 74 75build 76----- 77 78$ make O=<your_custom_build_catalog> 79 80Example: 81$ make O=/home/hedin/prj/cpupower/build 82 83install 84------- 85 86$ make O=<your_custom_build_catalog> DESTDIR=<your_custom_install_catalog> 87 88Example: 89$ make O=/home/hedin/prj/cpupower/build DESTDIR=/home/hedin/prj/cpupower \ 90> install 91 92Notice that both variables 'O' and 'DESTDIR' have been provided. The reason 93is that the build results are saved in the custom output dir defined by 'O' 94variable. So, this dir is the source for the installation step. If only 95'DESTDIR' were provided then the 'install' target would assume that the 96build directory is the current one, build everything there and install 97from the current dir. 98 99The files will be installed to the following dirs: 100 101----------------------------------------------------------------------- 102| Installing file | System dir | 103----------------------------------------------------------------------- 104| libcpupower | ${DESTDIR}/usr/lib | 105----------------------------------------------------------------------- 106| cpupower | ${DESTDIR}/usr/bin | 107----------------------------------------------------------------------- 108| cpufreq-bench_plot.sh | ${DESTDIR}/usr/bin | 109----------------------------------------------------------------------- 110| man pages | ${DESTDIR}/usr/man | 111----------------------------------------------------------------------- 112 113If you look at the table for the default 'make' output dirs you will 114notice that the only difference with the non-default case is the 115${DESTDIR} prefix. So, the structure of the output dirs remains the same 116regardles of the root output directory. 117 118 119clean and uninstall 120------------------- 121 122'clean' target is intended for cleanup the build catalog from build results 123'uninstall' target is intended for removing installed files from the 124installation directory 125 126default directory 127----------------- 128 129This case is a straightforward one: 130$ make clean 131$ make uninstall 132 133custom directory 134---------------- 135 136Use 'O' command line variable to remove previously built files from the 137build dir: 138$ make O=<your_custom_build_catalog> clean 139 140Example: 141$ make O=/home/hedin/prj/cpupower/build clean 142 143Use 'DESTDIR' command line variable to uninstall previously installed files 144from the given dir: 145$ make DESTDIR=<your_custom_install_catalog> 146 147Example: 148make DESTDIR=/home/hedin/prj/cpupower uninstall 149 150 151running the tool 152---------------- 153 154default directory 155----------------- 156 157$ sudo cpupower 158 159custom directory 160---------------- 161 162When it comes to run the utility from the custom build catalog things 163become a little bit complicated as 'just run' approach doesn't work. 164Assuming that the current dir is '<your_custom_install_catalog>/usr', 165issuing the following command: 166 167$ sudo ./bin/cpupower 168will produce the following error output: 169./bin/cpupower: error while loading shared libraries: libcpupower.so.1: 170cannot open shared object file: No such file or directory 171 172The issue is that binary cannot find the 'libcpupower' library. So, we 173shall point to the lib dir: 174sudo LD_LIBRARY_PATH=lib64/ ./bin/cpupower 175 176 177THANKS 178------ 179Many thanks to Mattia Dongili who wrote the autotoolization and 180libtoolization, the manpages and the italian language file for cpupower; 181to Dave Jones for his feedback and his dump_psb tool; to Bruno Ducrot for his 182powernow-k8-decode and intel_gsic tools as well as the french language file; 183and to various others commenting on the previous (pre-)releases of 184cpupower. 185 186 187 Dominik Brodowski 188