是什么 ? | : | a collection of utilities and libraries to read, create and modify ELF binary files, find and handle DWARF debug data, symbols, thread state and stacktraces for processes and core files on GNU/Linux. |
开发语言 | : | C |
官方主页 | : | https://sourceware.org/elfutils |
操作系统 | 包管理器 | 安装命令 |
---|---|---|
apt | sudo apt-get install -y elfutils | |
CentOS | yum | sudo yum install -y elfutils |
dnf | sudo dnf install -y elfutils | |
openSUSE | zypper | sudo zypper install -y elfutils |
Alpine Linux | apk | sudo apk add elfutils |
pacman | sudo pacman -Syyu --noconfirm | |
Gentoo Linux | Portage | sudo emerge elfutils |
step1、安装依赖
所有时 | Terminal + Shell + GNU CoreUtils |
下载时 | cURL |
解压时 | tar + bzip2 |
编译时 | gmake、gcc / GCC | Clang / LLVM |
运行时 |
|
step2、使用curl命令下载ELFUtils
源码包 ()
curl -LO https://sourceware.org/elfutils/ftp/0.178/elfutils-0.178.tar.bz2
step3、使用tar解压ELFUtils
源码包
tar vxf elfutils-0.178.tar.bz2
step4、进入elfutils-0.178
目录
cd elfutils-0.178
step5、查看elfutils-0.178
目录中的内容
step6、创建构建目录,并进入该目录
mkdir build && cd build
step7、使用../configure
配置编译参数
../configure
是一个可执行的POSIX sh脚本,用它 配置后会产生gmake的配置文件Makefile。
../configure
的使用格式如下:
./configure [option]... [VAR=VALUE]...
option | 说明 | |
---|---|---|
--help | -h | 查看../configure 的使用帮助 | |
--version | -V | 查看../configure 是哪个版本的autoconf生成的 | |
--quiet | -q | --silent | 不输出checking... 这些信息 | |
--prefix=DIR | 指定安装目录。默认是/usr/local/ | |
--host=HOST | 设置目标程序运行的CPU平台 一般不需要设置,除非你想要 交叉编译 默认与与宿主机一样 | |
--enable-FEATURE[=yes|no] | yes: 开启FEATURE no : 关闭FEATURE | |
--enable-dependency-tracking[=yes|no] | 是否开启依赖追踪 | |
--enable-option-checking[=yes|no] | 是否检查有无不认识的--enable-FEATURE 、--with-PACKAGE 参数 | |
--enable-silent-rules[=yes|no] | yes 相当于make V=0 no 相当于make V=1 | |
--enable-nls[=yes|no] | 是否支持Native Language Support | |
--enable-largefile[=yes|no] | 是否支持大文件 (超过2GB ) | |
--enable-gprof[=yes|no] | 是否支持gprof | |
--enable-gcov[=yes|no] | 是否使用gcov做测试用例的覆盖率统计 | |
--enable-valgrind[=yes|no] | 是否支持Valgrind | |
--enable-valgrind-annotations[=yes|no] | 是否支持Valgrind的annotations | |
--enable-install-elfh[=yes|no] | 是否安装elf.h | |
--enable-debuginfod[=yes|no] | 是否编译debuginfod ,依赖BinUtils >=2.34 | |
--enable-sanitize-undefined[=yes|no] | 是否开启编译器 的Undefined Behavior Sanitizer特性 | |
--with-PACKAGE[=yes|no] | yes: 使用PACKAGE no: 不使用PACKAGE | |
--with-valgrind[=DIR] | 设置Valgrind的头文件所在路径 | |
--with-zlib[=DIR] | 设置zlib的所在位置 | |
--with-bzlib[=DIR] | 设置bzip2(libbz2 )的所在位置 | |
--with-lzma[=DIR] | 设置xz(liblzma )的所在位置 |
与enable-FEATURE
对应的选项,还有disable-FEATURE
,disable-FEATURE
相当于enable-FEATURE=no
与 with-PACKAGE
对应的选项,还有without-PACKAGE
,without-PACKAGE
相当于 with-PACKAGE=no
VAR | VALUE示例 | 说明 |
---|---|---|
CC | gcc | clang | 指定C编译器 |
CFLAGS | -O2 -v | 指定C编译器的参数 |
CXX | g++ | clang++ | 指定C++编译器 |
CXXFLAGS | -O2 -v | 指定C++编译器的参数 |
CPP | cpp | 指定C预处理器 |
CPPFLAGS | -I<includeDIR> | 指定C预处理器的参数 |
LDFLAGS | -L<libDIR> | 指定C链接器的参数 |
LIBS | -l<libName> | 指定C链接器要链接的库的名称 |
YACC | /usr/bin/yacc | 指定yacc 命令的路径。通常使用Bison实现 |
YFLAGS | 设置yacc 命令的参数 |
示例:
../configure --prefix=/usr CFLAGS='-O2 -v'
step8、使用make进行编译、安装
make && sudo make install