120 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 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
 | |
| 
 | |
| HTML and PDF documentation
 | |
| 
 | |
|    You may want to generate an HTML or PDF version of the manual in addition
 | |
|    to the above info pages.  These versions may be easier to read and easier
 | |
|    to search.  To generate HTML:
 | |
| 
 | |
|       cd build        # the same build directory you created above
 | |
|       cd gprofng/doc
 | |
|       make html
 | |
|       sudo make install-html
 | |
| 
 | |
|    If you would like PDF documentation, you will need the texi2dvi utility.
 | |
|    If it is not already included in the texinfo package mentioned above, try
 | |
|    installing package texinfo-tex.  To generate PDF:
 | |
| 
 | |
|       cd build        # the same build directory you created above
 | |
|       cd gprofng/doc
 | |
|       make pdf
 | |
|       sudo make install-pdf
 | |
| 
 | |
| 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.
 | |
| 
 |