开源代码的编译configure的相关选项

目标:移植tcpdump的文件,apt-get source tcpdump  得到源代码,配置  ./configure  --prefix=/home/apple/you/net/day01/test/bin_tcpdump/


缺少库文件:libpcap,apt-get source libpcap    得到库的源码,

2131  ./configure --prefix=/home/apple/you/net/day01/test/bin_libpcap/
 2132  make
 2133  make install 


./configure  --prefix=/home/apple/you/net/day01/test/bin_tcpdump/  --includedir=/home/apple/you/net/day01/test/bin_libpcap/include/  --libdir=/home/apple/you/net/day01/test/bin_libpcap/lib/

make

出现error

/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
dso_dlfcn.c:(.text+0x2c8): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x38e): undefined reference to `dlerror'
/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
dso_dlfcn.c:(.text+0x404): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x4be): undefined reference to `dlerror'
/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
dso_dlfcn.c:(.text+0x51f): undefined reference to `dlclose'
/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
dso_dlfcn.c:(.text+0x5d4): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x642): undefined reference to `dlclose'
dso_dlfcn.c:(.text+0x670): undefined reference to `dlerror'
collect2: ld returned 1 exit status
make: *** [tcpdump] Error 1


root@ubuntu:/home/apple/you/net/day01/test/tcpdump-4.0.0# ./configure  --prefix=/home/apple/you/net/day01/test/bin_tcpdump/  --includedir=/home/apple/you/net/day01/test/bin_libpcap/include/  --libdir=/home/apple/you/net/day01/test/bin_libpcap/lib/  LDFLAGS=-ldl



<think>好的,我现在需要帮助用户解决如何修改strace的编译选项的问题。用户提到他们想调整strace的行为,可能是在交叉编译或者定制功能时需要修改配置。首先,我应该回顾用户提供的引用内容,特别是引用[1]、[2]、[4]和[5],因为这些涉及strace的编译和配置步骤。 首先,用户提供的引用[1]中提到解压strace-4.21.tar.xz,然后运行./configure命令,带有--host和--prefix参数,但遇到了错误,解决方法是添加--enable-mpers=no。这说明在配置阶段可以通过参数来调整编译选项,可能需要处理架构兼容性问题。引用[2]同样提到了配置时指定了prefix、host,并设置了交叉编译器CC和LD变量。引用[4]则提到如果源码没有configure脚本,需要运行./bootstrap生成,然后配置参数。这些步骤都是修改编译选项的关键。 接下来,我需要整理出修改strace编译选项的通用步骤。首先,用户需要进入源码目录,然后生成configure脚本(如果有必要的话)。然后运行./configure命令,并添加所需的参数,比如指定交叉编译工具链、安装路径、禁用或启用某些功能等。例如,--host参数指定目标平台,--prefix指定安装路径,--enable-feature或--disable-feature来调整功能。引用[1]中的--enable-mpers=no就是一个例子,用于解决特定错误。此外,用户还可以通过环境变量如CC和LD来指定编译器,如引用[2]中的做法。 另外,用户可能还需要处理依赖项或内核相关的配置,如引用[5]提到的修改内核命令行参数,但可能不直接相关,不过可以提醒用户注意系统环境的影响。例如,某些编译选项可能需要内核支持或特定的SELinux模式。 用户的问题还可能涉及如何查看所有可用的配置选项。这时,建议用户运行./configure --help来获取帮助信息,这样可以列出所有可用的选项,比如启用调试模式或静态链接等。此外,在编译后,可能需要通过环境变量或命令行参数来调整strace的行为,如跟踪特定系统调用或输出格式。 最后,需要提醒用户常见问题,比如交叉编译时的工具链路径是否正确,依赖库是否安装,以及如何处理配置错误。例如,引用[1]中的错误通过添加--enable-mpers=no解决,说明某些功能可能需要显式禁用。 总结步骤应该是:准备源码,生成configure(如果需要),运行configure带参数,处理可能的问题,然后make和安装。同时,给出具体的示例,如交叉编译和禁用多平台支持,帮助用户更直观地操作。此外,生成相关问题可以引导用户进一步探索,比如交叉编译的依赖处理或调试选项的使用。</think>### 如何修改strace的编译选项以调整其行为 修改strace的编译选项主要涉及源码配置阶段(`./configure`)的参数调整和编译环境变量设置,以下是具体步骤: --- #### **1. 生成配置脚本(如有必要)** 如果strace源码中没有`configure`脚本(例如从Git仓库直接克隆),需先运行以下命令生成: ```bash ./bootstrap # 生成configure脚本[^4] ``` --- #### **2. 配置编译参数** 通过`./configure`命令设置编译选项,常用参数如下: - **指定目标平台**(交叉编译): ```bash ./configure --host=arm-ca9-linux-gnueabihf # 指定目标架构为ARM平台[^1] ``` - **设置安装路径**: ```bash ./configure --prefix=/home/nfsshare/strace # 指定编译后文件的安装目录[^2] ``` - **禁用/启用特定功能**: ```bash ./configure --enable-mpers=no # 禁用多平台支持(解决某些架构兼容性问题)[^1] ``` - **指定交叉编译器**: ```bash CC=arm-linux-gcc LD=arm-linux-ld ./configure # 手动指定C编译器和链接器 ``` --- #### **3. 处理依赖项和内核配置** - **内核兼容性**:若编译时提示内核头文件缺失,需安装对应架构的Linux内核头文件。 - **SELinux模式**:若涉及SELinux权限问题,可临时设置为宽容模式(参考`androidboot.selinux=permissive`)[^5]。 --- #### **4. 编译与安装** ```bash make # 编译源码 make install # 安装到--prefix指定的目录 ``` --- #### **5. 验证调整后的行为** 使用`strace`跟踪目标程序,观察是否满足需求: ```bash strace -o output.log ./some_server # 记录系统调用日志[^3] ``` --- ### **常见问题与解决** 1. **报错`Cannot enable mpers personality support`** 添加`--enable-mpers=no`禁用多平台支持。 2. **交叉编译工具链路径错误** 确保环境变量(如`CC`、`LD`)指向正确的交叉编译器路径。 3. **依赖库缺失** 安装目标平台的基础库(如glibc、内核头文件)。 --- ### **配置示例** **场景:为ARM设备交叉编译strace** ```bash tar xf strace-4.21.tar.xz cd strace-4.21 ./configure --host=arm-linux-gnueabihf --prefix=/opt/strace --enable-mpers=no make && make install ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值