123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- What is gprofng?
- Gprofng is the GNU Next Generation profiler for analyzing the performance
- of Linux applications. Gprofng allows you to:
- - Profile C / C++ / Java / Scala applications without needing to recompile
- - Profile multi-threaded applications
- - Analyze and compare multiple experiments
- - Use time-based sampling and / or hardware event counters
- Building gprofng
- Gprofng is distributed with binutils. To build gprofng, you build binutils.
- Overview:
- 1. Set paths
- 2. Verify prerequisites
- 3. Git clone
- 4. Configure, make, and make install
- Details follow for each of these.
- 1. Set paths
- If you are configuring binutils for the default location, it will use:
- /usr/local
- In your shell initialization procedure, set your paths using commands
- similar to these:
- export PATH=/usr/local/bin:$PATH
- export MANPATH=/usr/local/share/man:$MANPATH
- export INFOPATH=/usr/local/share/info/:$INFOPATH
- 2. Verify prerequisites
- To build a recent version of binutils, it is useful to have a developer
- system with the most recent compilers, libraries, and operating system.
- Development systems will typically already include most of these:
- bison bison-devel bzip2 elfutils-debuginfod-client-devel
- expat-devel flex gcc gcc-c++ git-core git-core-doc gmp-devel
- help2man libbabeltrace-devel libipt-devel m4 make mpfr-devel
- ncurses-devel perl-Data-Dumper tar texinfo xz zlib-devel
- java-17-openjdk-devel
- CAUTION: The list of prerequisites changes depending on your operating system
- and changes as binutils evolves. The list above is a snapshot of the useful
- packages in early 2022 for Red Hat Enterprise Linux and Oracle Linux.
- Your system may use other packages; for example, you may be able to use a
- different version of Java than shown above. If there are failures, you may
- need to search for other packages as described in the "Hints" section below.
- 3. Git clone
- Select a binutils repository and a branch that you would like
- to start from. For example, to clone from the master at
- sourceware.org, you could say:
- git clone http://sourceware.org/git/binutils-gdb.git CloneDir
- 4. Configure, make, and install
- There are many options for configure (see: configure --help). For example,
- --prefix sets the destination, as described in the "Hints" section below.
- If the default destination /usr/local is acceptable for your needs, then
- after the clone operation finishes, you can simply say:
- mkdir build
- cd build
- ../CloneDir/configure
- make
- sudo make install
- Getting started
- To start using gprofng, see the tutorial available by saying:
- info gprofng
- Hints and tips for building binutils
- - Use the script(1) command to write a log of your build.
- - If you run multiple commands at once (for example: make --jobs=10) then you
- should also use make option:
- --output-sync
- Without --output-sync, the log would be difficult to interpret.
- - Search the log for errors and warnings, for example:
- configure: WARNING: <package> is missing or unusable; some features
- may be unavailable.
- The above message suggests that <package> may be needed on your system.
- - Sometimes the above message is not sufficiently specific to guide you to
- the right package. In the directory where the failure happens, config.log
- may identify a specific missing file, and your package manager may allow
- you to search for it. For example, if build/gprofng/config.log shows that
- javac is missing, and if your package manager is dnf, you could try:
- dnf --repo='*' whatprovides '*/javac'
- - You can set a custom destination directory using configure --prefix.
- This is useful if you prefer not to change /usr/local, or if you are not
- allowed to do so. If you set a custom prefix, be sure to change all three
- paths mentioned in the PATH section above.
|