编译静态expect现undefined reference to `openpty' 错误解决方法

本文解决了一个具体的gcc编译链接错误,该错误出现在使用expect库进行编译的过程中。通过添加-lutil参数成功链接了util库,解决了undefined reference to `openpty'的问题。

错误提示如下:

...

gcc \
-pipe -O2 -fomit-frame-pointer -Wall \
-Wl,--export-dynamic \
-o expect exp_main_exp.o \
-L/work/pkgs/expect5.45 -lexpect5.45 \
-L/work/pkgs/tcl8.5.9/unix -ltcl8.5 \
-ldl -lieee -lm \
-Wl,-rpath,/usr/local/lib \
-Wl,-rpath,/usr/local/lib/expect5.45
/work/pkgs/expect5.45/libexpect5.45.a(pty_termios.o): In function `exp_getptymaster':
pty_termios.c:(.text+0x2f5): undefined reference to `openpty'
collect2: ld returned 1 exit status
make: *** [expect] Error 1

解决方法:

添加util链接库 -lutil

在Postman使用断言时提示 'expected undefined to deeply equal' 通常是因为预期比较的值为 `undefined`,这可能是由于多种原因导致的,以下是具体的分析与解决方法: ### 未正确获取响应数据 如果尝试访问响应中不存在的属性,就会得到 `undefined`。 ```javascript // 错误示例:假设响应中没有 'data' 属性 pm.test("Check data", function () { var jsonData = pm.response.json(); pm.expect(jsonData.data).to.deep.equal({ key: 'value' }); }); // 正确示例:先检查属性是否存在 pm.test("Check data", function () { var jsonData = pm.response.json(); if (jsonData.hasOwnProperty('data')) { pm.expect(jsonData.data).to.deep.equal({ key: 'value' }); } else { console.log("Response does not have 'data' property"); } }); ``` ### 异步操作问题 如果在异步操作完成之前进行断言,也可能导致获取的值为 `undefined`。 ```javascript // 错误示例:异步操作未完成就进行断言 var value; setTimeout(function () { value = 'new value'; }, 1000); pm.expect(value).to.deep.equal('new value'); // 正确示例:在异步操作完成后进行断言 setTimeout(function () { var value = 'new value'; pm.test("Check value", function () { pm.expect(value).to.deep.equal('new value'); }); }, 1000); ``` ### 响应解析错误 如果响应不是有效的JSON格式,`pm.response.json()` 可能会抛出错误或返回 `undefined`。 ```javascript // 检查响应是否为有效的JSON pm.test("Response is valid JSON", function () { try { var jsonData = pm.response.json(); pm.expect(jsonData).to.be.an('object'); } catch (error) { console.log("Response is not valid JSON: ", error); } }); ``` ### 变量未正确设置 如果使用了环境变量或全局变量,确保这些变量已经正确设置。 ```javascript // 错误示例:变量未设置 pm.test("Check variable", function () { var myVariable = pm.environment.get('nonexistentVariable'); pm.expect(myVariable).to.deep.equal('expectedValue'); }); // 正确示例:先检查变量是否存在 pm.test("Check variable", function () { var myVariable = pm.environment.get('myVariable'); if (myVariable) { pm.expect(myVariable).to.deep.equal('expectedValue'); } else { console.log("Variable 'myVariable' is not set"); } }); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值