| The cpupower package consists of the following elements: |
| |
| requirements |
| ------------ |
| |
| On x86 pciutils is needed at runtime (-lpci). |
| For compilation pciutils-devel (pci/pci.h) and a gcc version |
| providing cpuid.h is needed. |
| For both it's not explicitly checked for (yet). |
| |
| |
| libcpupower |
| ---------- |
| |
| "libcpupower" is a library which offers a unified access method for userspace |
| tools and programs to the cpufreq core and drivers in the Linux kernel. This |
| allows for code reduction in userspace tools, a clean implementation of |
| the interaction to the cpufreq core, and support for both the sysfs and proc |
| interfaces [depending on configuration, see below]. |
| |
| |
| compilation and installation |
| ---------------------------- |
| |
| There are 2 output directories - one for the build output and another for |
| the installation of the build results, that is the utility, library, |
| man pages, etc... |
| |
| default directory |
| ----------------- |
| |
| In the case of default directory, build and install process requires no |
| additional parameters: |
| |
| build |
| ----- |
| |
| $ make |
| |
| The output directory for the 'make' command is the current directory and |
| its subdirs in the kernel tree: |
| tools/power/cpupower |
| |
| install |
| ------- |
| |
| $ sudo make install |
| |
| 'make install' command puts targets to default system dirs: |
| |
| ----------------------------------------------------------------------- |
| | Installing file | System dir | |
| ----------------------------------------------------------------------- |
| | libcpupower | /usr/lib | |
| ----------------------------------------------------------------------- |
| | cpupower | /usr/bin | |
| ----------------------------------------------------------------------- |
| | cpufreq-bench_plot.sh | /usr/bin | |
| ----------------------------------------------------------------------- |
| | man pages | /usr/man | |
| ----------------------------------------------------------------------- |
| |
| To put it in other words it makes build results available system-wide, |
| enabling any user to simply start using it without any additional steps |
| |
| custom directory |
| ---------------- |
| |
| There are 2 make's command-line variables 'O' and 'DESTDIR' that setup |
| appropriate dirs: |
| 'O' - build directory |
| 'DESTDIR' - installation directory. This variable could also be setup in |
| the 'CONFIGURATION' block of the "Makefile" |
| |
| build |
| ----- |
| |
| $ make O=<your_custom_build_catalog> |
| |
| Example: |
| $ make O=/home/hedin/prj/cpupower/build |
| |
| install |
| ------- |
| |
| $ make O=<your_custom_build_catalog> DESTDIR=<your_custom_install_catalog> |
| |
| Example: |
| $ make O=/home/hedin/prj/cpupower/build DESTDIR=/home/hedin/prj/cpupower \ |
| > install |
| |
| Notice that both variables 'O' and 'DESTDIR' have been provided. The reason |
| is that the build results are saved in the custom output dir defined by 'O' |
| variable. So, this dir is the source for the installation step. If only |
| 'DESTDIR' were provided then the 'install' target would assume that the |
| build directory is the current one, build everything there and install |
| from the current dir. |
| |
| The files will be installed to the following dirs: |
| |
| ----------------------------------------------------------------------- |
| | Installing file | System dir | |
| ----------------------------------------------------------------------- |
| | libcpupower | ${DESTDIR}/usr/lib | |
| ----------------------------------------------------------------------- |
| | cpupower | ${DESTDIR}/usr/bin | |
| ----------------------------------------------------------------------- |
| | cpufreq-bench_plot.sh | ${DESTDIR}/usr/bin | |
| ----------------------------------------------------------------------- |
| | man pages | ${DESTDIR}/usr/man | |
| ----------------------------------------------------------------------- |
| |
| If you look at the table for the default 'make' output dirs you will |
| notice that the only difference with the non-default case is the |
| ${DESTDIR} prefix. So, the structure of the output dirs remains the same |
| regardles of the root output directory. |
| |
| |
| clean and uninstall |
| ------------------- |
| |
| 'clean' target is intended for cleanup the build catalog from build results |
| 'uninstall' target is intended for removing installed files from the |
| installation directory |
| |
| default directory |
| ----------------- |
| |
| This case is a straightforward one: |
| $ make clean |
| $ make uninstall |
| |
| custom directory |
| ---------------- |
| |
| Use 'O' command line variable to remove previously built files from the |
| build dir: |
| $ make O=<your_custom_build_catalog> clean |
| |
| Example: |
| $ make O=/home/hedin/prj/cpupower/build clean |
| |
| Use 'DESTDIR' command line variable to uninstall previously installed files |
| from the given dir: |
| $ make DESTDIR=<your_custom_install_catalog> |
| |
| Example: |
| make DESTDIR=/home/hedin/prj/cpupower uninstall |
| |
| |
| running the tool |
| ---------------- |
| |
| default directory |
| ----------------- |
| |
| $ sudo cpupower |
| |
| custom directory |
| ---------------- |
| |
| When it comes to run the utility from the custom build catalog things |
| become a little bit complicated as 'just run' approach doesn't work. |
| Assuming that the current dir is '<your_custom_install_catalog>/usr', |
| issuing the following command: |
| |
| $ sudo ./bin/cpupower |
| will produce the following error output: |
| ./bin/cpupower: error while loading shared libraries: libcpupower.so.1: |
| cannot open shared object file: No such file or directory |
| |
| The issue is that binary cannot find the 'libcpupower' library. So, we |
| shall point to the lib dir: |
| sudo LD_LIBRARY_PATH=lib64/ ./bin/cpupower |
| |
| |
| THANKS |
| ------ |
| Many thanks to Mattia Dongili who wrote the autotoolization and |
| libtoolization, the manpages and the italian language file for cpupower; |
| to Dave Jones for his feedback and his dump_psb tool; to Bruno Ducrot for his |
| powernow-k8-decode and intel_gsic tools as well as the french language file; |
| and to various others commenting on the previous (pre-)releases of |
| cpupower. |
| |
| |
| Dominik Brodowski |