第三章:测试开发环境搭建
好,咱们直接进入正题。环境搭建这事儿,说难不难,说简单也不简单。我见过太多工程师,代码写得漂亮,结果环境配了一星期还没跑起来。说白了,这步要是没做好,后面全是坑。
3.1 操作系统配置
ATE测试开发,主流还是Linux。我个人习惯用CentOS 7或RHEL 8,稳定,兼容性好。你想想看,测试机台动辄几百万,操作系统必须稳如老狗。
基础配置清单:
- 关闭防火墙:测试机台内部网络,不需要防火墙。命令:
systemctl stop firewalld && systemctl disable firewalld - 关闭SELinux:这玩意儿经常导致权限问题。编辑
/etc/selinux/config,把SELINUX=enforcing改成disabled。 - 安装必要工具包:
yum groupinstall "Development Tools" -y,一次性搞定gcc、make这些基础工具。 - 设置内核参数:ATE测试对共享内存和信号量要求高。在
/etc/sysctl.conf里加上:
# 共享内存最大值(单位:字节)
kernel.shmmax = 68719476736
# 信号量参数
kernel.sem = 250 32000 100 128
# 文件句柄上限
fs.file-max = 65535
改完记得sysctl -p生效。嗯,这里要注意,shmmax的值要根据你机台的内存大小来调,别照搬我的。
⚠️ 避坑指南
我曾经遇到过一台新机台,装完系统怎么都连不上测试头。查了两天,最后发现是防火墙没关,端口被堵了。从那以后,我装机第一件事就是关防火墙。
我曾经遇到过一台新机台,装完系统怎么都连不上测试头。查了两天,最后发现是防火墙没关,端口被堵了。从那以后,我装机第一件事就是关防火墙。
3.2 编译器安装
ATE测试程序开发,编译器是核心。主流用的是GCC,版本建议4.8.5以上。为什么?因为C++11标准支持得好,很多测试库都依赖这个版本。
安装步骤:
- 检查当前版本:
gcc --version。如果版本太低,别用系统自带的,自己编译一个。 - 下载源码:去GNU官网或镜像站下载gcc-4.8.5.tar.gz。
- 解压并配置:
tar -zxvf gcc-4.8.5.tar.gz
cd gcc-4.8.5
./contrib/download_prerequisites # 自动下载依赖库
mkdir build && cd build
../configure --prefix=/usr/local/gcc-4.8.5 --enable-languages=c,c++ --disable-multilib
- 编译安装:
make -j4 && make install。这里-j4是并行编译,根据你CPU核心数来调。 - 设置优先级:用
update-alternatives管理多个GCC版本。
update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-4.8.5/bin/gcc 100
update-alternatives --install /usr/bin/g++ g++ /usr/local/gcc-4.8.5/bin/g++ 100
💡 个人经验
我建议你编译时加上
我建议你编译时加上
--disable-multilib。如果不加,系统会尝试编译32位和64位两套库,编译时间翻倍,而且容易报错。除非你明确需要32位支持,否则别给自己找麻烦。
3.3 License配置
ATE测试软件,比如Teradyne的IG-XL、Advantest的TEL,都需要License。说白了,就是花钱买的授权文件。
License配置要点:
- 获取License文件:一般是一个
.lic或.dat文件。注意看有效期,别过期了还不知道。 - 设置环境变量:把License文件路径告诉系统。
- 启动License服务:有些软件需要启动一个后台服务来管理License。
典型配置示例(以IG-XL为例):
# 在.bashrc或.profile中添加
export IGXL_LICENSE_FILE=/opt/license/igxl.lic
export LM_LICENSE_FILE=/opt/license/igxl.lic:$LM_LICENSE_FILE
# 启动License服务(如果需要)
/opt/flexlm/lmgrd -c /opt/license/igxl.lic -l /var/log/lmgrd.log
⚠️ 避坑指南
我曾经遇到过License文件路径写对了,但软件就是报"License not found"。查了半天,发现是
我曾经遇到过License文件路径写对了,但软件就是报"License not found"。查了半天,发现是
LM_LICENSE_FILE变量里多个License路径用冒号分隔,但有个路径末尾多了个空格。嗯,这种低级错误最坑人。
3.4 环境变量设置
环境变量,说白了就是告诉系统「我的工具在哪、库在哪、头文件在哪」。设置不对,编译就报错。
核心环境变量:
| 变量名 | 作用 | 示例值 |
|---|---|---|
PATH |
可执行文件搜索路径 | /usr/local/gcc-4.8.5/bin:/opt/igxl/bin |
LD_LIBRARY_PATH |
动态库搜索路径 | /usr/local/lib:/opt/igxl/lib |
C_INCLUDE_PATH |
C语言头文件搜索路径 | /usr/local/include:/opt/igxl/include |
CPLUS_INCLUDE_PATH |
C++头文件搜索路径 | /usr/local/include:/opt/igxl/include |
IGXL_LICENSE_FILE |
License文件路径 | /opt/license/igxl.lic |
推荐配置方式:
我个人习惯把所有环境变量写到一个文件里,比如/etc/profile.d/ate_env.sh。这样统一管理,不会乱。
#!/bin/bash
# ATE测试开发环境变量配置
# 编译器
export PATH=/usr/local/gcc-4.8.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/gcc-4.8.5/lib64:$LD_LIBRARY_PATH
# IG-XL
export IGXL_HOME=/opt/igxl
export PATH=$IGXL_HOME/bin:$PATH
export LD_LIBRARY_PATH=$IGXL_HOME/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=$IGXL_HOME/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=$IGXL_HOME/include:$CPLUS_INCLUDE_PATH
# License
export IGXL_LICENSE_FILE=/opt/license/igxl.lic
export LM_LICENSE_FILE=/opt/license/igxl.lic:$LM_LICENSE_FILE
写完后,chmod +x /etc/profile.d/ate_env.sh,然后source /etc/profile生效。你想想看,这样以后换机台,直接把这个文件拷过去,环境就全了。
💡 个人经验
我建议你在
我建议你在
.bashrc里加一行echo "ATE环境已加载"。这样每次登录终端,看到这行字就知道环境没问题。别小看这个习惯,排查问题的时候能省不少时间。
3.5 验证环境
环境搭好了,怎么知道对不对?跑几个命令验证一下。
# 检查GCC版本
gcc --version
# 检查IG-XL是否可用
igxl -version
# 检查License是否正常
lmstat -a -c /opt/license/igxl.lic
# 编译一个简单的测试程序
echo '#include <iostream>
int main() {
std::cout << "ATE环境搭建成功!" << std::endl;
return 0;
}' > test.cpp
g++ -o test test.cpp
./test
如果每一步都正常输出,恭喜你,环境搭好了。如果报错,别慌。先看错误信息,八成是路径写错了或者License没启动。
📌 核心要点总结
- 操作系统:关闭防火墙和SELinux,安装开发工具包
- 编译器:GCC 4.8.5以上,自己编译更可控
- License:路径别带空格,服务要启动
- 环境变量:统一管理,写在
/etc/profile.d/下 - 验证:跑几个命令确认所有组件正常
环境搭建这块,说白了就是细心。我见过太多人在这步翻车,后面调试的时候才发现是环境问题。嗯,花半天时间把环境配好,后面能省三天时间。值不值?你自己算算。