本教程专门适配 openEuler 25.09 版本,所有命令都经过验证,可直接使用。
前言
在 Linux 系统上搭建开发环境往往让初学者感到困惑:软件源配置错误、依赖库缺失、编译器版本不匹配......这些问题都会阻碍开发进程。openEuler 25.09 作为企业级 Linux 发行版,虽然功能强大,但其独特的软件包管理体系需要专门的配置方法。
本教程是一份经过实战验证的完整配置手册,从第一步配置软件源开始,到最后验证开发环境,每个步骤都提供了可直接运行的命令和详细的说明。您不需要四处搜索资料,只需按照本教程逐步操作,即可在 30 分钟内搭建起包含 GCC、GDB、常用开发库的完整开发环境,立即开始您的编程工作。
一、配置软件源
1.1 备份原始配置
首先备份系统原有的软件源配置:
Bash
# 备份原始源配置文件
sudo cp /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.backup
# 确认当前系统版本
cat /etc/os-release

1.2 配置官方镜像源
为了加速软件包下载,配置镜像源:
Bash
sudo tee /etc/yum.repos.d/openEuler.repo > /dev/null << 'EOF'
[OS]
name=openEuler-25.09-OS
baseurl=https://repo.openeuler.org/openEuler-25.09/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.openeuler.org/openEuler-25.09/OS/$basearch/RPM-GPG-KEY-openEuler
[everything]
name=openEuler-25.09-Everything
baseurl=https://repo.openeuler.org/openEuler-25.09/everything/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.openeuler.org/openEuler-25.09/OS/$basearch/RPM-GPG-KEY-openEuler
[EPOL]
name=openEuler-25.09-EPOL
baseurl=https://repo.openeuler.org/openEuler-25.09/EPOL/main/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.openeuler.org/openEuler-25.09/OS/$basearch/RPM-GPG-KEY-openEuler
[update]
name=openEuler-25.09-Update
baseurl=https://repo.openeuler.org/openEuler-25.09/update/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.openeuler.org/openEuler-25.09/OS/$basearch/RPM-GPG-KEY-openEuler
EOF
# 清理缓存并更新软件源
sudo dnf clean all
sudo dnf makecache
# 验证软件源配置成功
sudo dnf repolist

如果这一步不行 你自行找符合自己操作系统的 源!!!
二、安装 GCC 编译器
2.1 安装 GCC 工具链
openEuler 25.09 自带较新版本的 GCC(预计 GCC 12 或更高版本):
Bash
# 安装 GCC 核心编译器
sudo dnf install -y gcc gcc-c++
# 安装编译必备工具
sudo dnf install -y make automake autoconf libtool
# 安装系统开发库
sudo dnf install -y glibc-devel kernel-headers kernel-devel
# 验证安装
gcc --version
g++ --version
make --version

2.2 测试 GCC 编译器
创建测试程序验证编译器:
Bash
# 创建工作目录
mkdir -p ~/openeuler-dev
cd ~/openeuler-dev
# 创建 C 语言测试程序
cat > hello.c << 'EOF'
#include <stdio.h>
int main() {
printf("===================================\n");
printf(" 欢迎使用 openEuler 25.09!\n");
printf("===================================\n");
printf("GCC 版本: %d.%d.%d\n", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
printf("编译时间: %s %s\n", __DATE__, __TIME__);
printf("系统架构: %s\n",
#ifdef __x86_64__
"x86_64"
#elif __aarch64__
"ARM64"
#else
"未知"
#endif
);
return 0;
}
EOF
# 编译 C 程序
gcc -o hello hello.c -Wall
# 运行程序
./hello

测试 C++ 编译器:
Bash
# 创建 C++ 测试程序(使用 C++20 特性)
cat > hello.cpp << 'EOF'
#include <iostream>
#include <vector>
#include <algorithm>
#include <ranges>
int main() {
std::vector<int> numbers = {5, 2, 8, 1, 9, 3, 7, 4, 6};
std::cout << "原始数组: ";
for(auto n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 使用 C++20 ranges 排序
std::ranges::sort(numbers);
std::cout << "排序后: ";
for(auto n : numbers) std::cout << n << " ";
std::cout << std::endl;
std::cout << "\n✅ C++ 编译器测试成功!" << std::endl;
std::cout << "C++ 标准: " << __cplusplus << std::endl;
return 0;
}
EOF
# 编译 C++ 程序(使用 C++20 标准)
g++ -o hello_cpp hello.cpp -std=c++20 -Wall
# 运行程序
./hello_cpp

三、安装调试工具 GDB
3.1 安装 GDB 调试器
Bash
# 安装 GDB 调试器
sudo dnf install -y gdb
# 安装辅助调试工具
sudo dnf install -y strace ltrace
# 安装性能分析工具
sudo dnf install -y valgrind
# 验证安装
gdb --version
strace --version
valgrind --version

3.2 GDB 调试实战
创建调试测试程序:
Bash
# 创建调试测试程序
cat > debug_test.c << 'EOF'
#include <stdio.h>
// 计算阶乘
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
// 数组求和
int sum_array(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum;
}
int main() {
printf("=== GDB 调试演示程序 ===\n\n");
// 测试阶乘函数
int num = 5;
printf("计算 %d 的阶乘\n", num);
int result = factorial(num);
printf("结果: %d! = %d\n\n", num, result);
// 测试数组求和
int numbers[] = {10, 20, 30, 40, 50};
int total = sum_array(numbers, 5);
printf("数组求和: %d\n", total);
return 0;
}
EOF
# 编译时加上 -g 选项生成调试信息
gcc -g -o debug_test debug_test.c -Wall
# 先正常运行
./debug_test

GDB 调试命令速查:
Bash
# 启动 GDB
gdb ./debug_test
# 在 GDB 中常用命令:
(gdb) list # 查看源代码
(gdb) break main # 在 main 函数设置断点
(gdb) break 18 # 在第 18 行设置断点
(gdb) info breakpoints # 查看所有断点
(gdb) run # 运行程序
(gdb) next # 单步执行(不进入函数)
(gdb) step # 单步执行(进入函数)
(gdb) print num # 打印变量值
(gdb) info locals # 查看所有局部变量
(gdb) backtrace # 查看调用栈
(gdb) continue # 继续执行
(gdb) quit # 退出
四、安装开发库(SDK)
4.1 安装常用开发库
openEuler 25.09 提供了丰富的开发库:
Bash
# 安装基础开发库
sudo dnf install -y zlib-devel bzip2-devel xz-devel
# 安装网络开发库
sudo dnf install -y openssl-devel libcurl-devel
# 安装数据库开发库
sudo dnf install -y sqlite-devel
# 安装 JSON 和 XML 处理库
sudo dnf install -y json-c-devel libxml2-devel
# 安装线程库
sudo dnf install -y libuv-devel
# 查看已安装的开发库
rpm -qa | grep devel | sort

4.2 测试开发库
测试 OpenSSL 库:
Bash
cat > ssl_test.c << 'EOF'
#include <stdio.h>
#include <string.h>
#include <openssl/md5.h>
#include <openssl/opensslv.h>
void print_md5(const char *str) {
unsigned char digest[MD5_DIGEST_LENGTH];
MD5((unsigned char*)str, strlen(str), digest);
printf("字符串: %s\n", str);
printf("MD5 值: ");
for(int i = 0; i < MD5_DIGEST_LENGTH; i++) {
printf("%02x", digest[i]);
}
printf("\n");
}
int main() {
printf("=== OpenSSL 开发库测试 ===\n");
printf("OpenSSL 版本: %s\n\n", OPENSSL_VERSION_TEXT);
print_md5("Hello openEuler 25.09!");
printf("\n✅ OpenSSL 库测试成功!\n");
return 0;
}
EOF
# 编译(链接 OpenSSL 库)
gcc -o ssl_test ssl_test.c -lssl -lcrypto -Wall
# 运行
./ssl_test

测试 SQLite 数据库:
Bash
cat > sqlite_test.c << 'EOF'
#include <stdio.h>
#include <sqlite3.h>
int main() {
printf("=== SQLite 数据库测试 ===\n");
printf("SQLite 版本: %s\n", sqlite3_libversion());
sqlite3 *db;
char *err_msg = 0;
// 创建内存数据库
int rc = sqlite3_open(":memory:", &db);
if(rc == SQLITE_OK) {
printf("✅ SQLite 数据库创建成功!\n");
// 创建测试表
const char *sql = "CREATE TABLE test(id INT, name TEXT);";
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
if(rc == SQLITE_OK) {
printf("✅ 数据表创建成功!\n");
} else {
printf("❌ 创建表失败: %s\n", err_msg);
sqlite3_free(err_msg);
}
sqlite3_close(db);
} else {
printf("❌ SQLite 数据库创建失败!\n");
return 1;
}
return 0;
}
EOF
# 编译
gcc -o sqlite_test sqlite_test.c -lsqlite3 -Wall
# 运行
./sqlite_test

五、实用开发技巧
5.1 创建快速编译脚本
Bash
# 创建编译脚本
cat > ~/compile.sh << 'EOF'
#!/bin/bash
# openEuler 25.09 快速编译脚本
if [ $# -eq 0 ]; then
echo "用法: ./compile.sh <源文件> [编译选项]"
echo "示例: ./compile.sh hello.c"
echo "示例: ./compile.sh hello.c -O3"
exit 1
fi
SOURCE=$1
shift
EXTRA_FLAGS="$@"
BASENAME=$(basename "$SOURCE" | sed 's/\.[^.]*$//')
EXT="${SOURCE##*.}"
if [ "$EXT" = "c" ]; then
echo "🔨 编译 C 程序: $SOURCE"
gcc -o "$BASENAME" "$SOURCE" -Wall -O2 -g $EXTRA_FLAGS
elif [ "$EXT" = "cpp" ] || [ "$EXT" = "cc" ]; then
echo "🔨 编译 C++ 程序: $SOURCE"
g++ -o "$BASENAME" "$SOURCE" -std=c++20 -Wall -O2 -g $EXTRA_FLAGS
else
echo "❌ 不支持的文件类型: $EXT"
exit 1
fi
if [ $? -eq 0 ]; then
echo "✅ 编译成功!输出文件: $BASENAME"
echo "▶️ 运行: ./$BASENAME"
ls -lh "$BASENAME"
else
echo "❌ 编译失败!"
exit 1
fi
EOF
# 添加执行权限
chmod +x ~/compile.sh
# 测试
cd ~/openeuler-dev
~/compile.sh hello.c

5.2 配置开发环境别名
Bash
# 添加到 ~/.bashrc
cat >> ~/.bashrc << 'EOF'
# ========== openEuler 25.09 开发环境 ==========
alias gcc-debug='gcc -g -Wall -Wextra'
alias g++-debug='g++ -g -Wall -Wextra -std=c++20'
alias gcc-opt='gcc -O3 -march=native -Wall'
alias g++-opt='g++ -O3 -march=native -Wall -std=c++20'
alias gdb-tui='gdb -tui'
alias ll='ls -lah --color=auto'
alias clean='rm -f *.o *.out a.out core.* *.so *.a'
# 显示开发环境信息
alias devinfo='echo "=== openEuler 25.09 开发环境 ===" && gcc --version | head -1 && g++ --version | head -1 && gdb --version | head -1 && make --version | head -1'
# 快速编译
alias qcc='gcc -Wall -O2 -g'
alias qcpp='g++ -Wall -O2 -g -std=c++20'
EOF
# 使配置生效
source ~/.bashrc
# 测试
devinfo

六、环境检查脚本
6.1 创建完整检查脚本
Bash
# 创建环境检查脚本
cat > ~/check_env.sh << 'EOF'
#!/bin/bash
echo "=========================================="
echo " openEuler 25.09 开发环境检查"
echo "=========================================="
echo ""
# 检查操作系统
echo "【系统信息】"
cat /etc/os-release | grep -E "PRETTY_NAME|VERSION"
echo "内核版本: $(uname -r)"
echo "系统架构: $(uname -m)"
echo ""
# 检查编译器
echo "【编译器】"
if command -v gcc >/dev/null 2>&1; then
echo "✅ GCC: $(gcc --version | head -1)"
else
echo "❌ GCC 未安装"
fi
if command -v g++ >/dev/null 2>&1; then
echo "✅ G++: $(g++ --version | head -1)"
else
echo "❌ G++ 未安装"
fi
echo ""
# 检查构建工具
echo "【构建工具】"
if command -v make >/dev/null 2>&1; then
echo "✅ Make: $(make --version | head -1)"
else
echo "❌ Make 未安装"
fi
echo ""
# 检查调试工具
echo "【调试工具】"
if command -v gdb >/dev/null 2>&1; then
echo "✅ GDB: $(gdb --version | head -1)"
else
echo "❌ GDB 未安装"
fi
if command -v valgrind >/dev/null 2>&1; then
echo "✅ Valgrind: $(valgrind --version)"
else
echo "❌ Valgrind 未安装"
fi
echo ""
# 检查开发库
echo "【开发库】"
for lib in zlib-devel openssl-devel libcurl-devel sqlite-devel json-c-devel; do
if rpm -q $lib >/dev/null 2>&1; then
echo "✅ $lib"
else
echo "❌ $lib (未安装)"
fi
done
echo ""
# 检查软件源
echo "【软件源】"
sudo dnf repolist 2>/dev/null | grep -E "repo id|OS|everything|EPOL|update" || echo "❌ 软件源配置可能有问题"
echo ""
echo "=========================================="
echo " 检查完成!"
echo "=========================================="
EOF
# 添加执行权限
chmod +x ~/check_env.sh
# 运行检查
~/check_env.sh
可以看到我们的开发者环境 所有的组件都已安装完毕

八、常见问题解决
8.1 软件源问题
问题:dnf 找不到软件包
Bash
# 解决方法1:更新缓存
sudo dnf clean all
sudo dnf makecache
# 解决方法2:检查软件源配置
sudo dnf repolist
# 解决方法3:搜索软件包
sudo dnf search gcc
sudo dnf search gdb
问题:下载速度慢
Bash
# 切换到华为云镜像(参考第一章的备用方案)
# 或者使用阿里云镜像
sudo sed -i 's|mirrors.tuna.tsinghua.edu.cn|mirrors.aliyun.com|g' /etc/yum.repos.d/openEuler.repo
sudo dnf clean all
sudo dnf makecache
8.2 编译问题
问题:找不到头文件
Bash
# 安装对应的 devel 包
sudo dnf provides */stdio.h
sudo dnf install -y glibc-devel
# 查找特定头文件
sudo dnf provides */openssl/ssl.h
问题:链接错误
Bash
# 示例:undefined reference to `sqrt'
# 解决:链接数学库
gcc -o program program.c -lm
# 示例:undefined reference to `pthread_create'
# 解决:链接线程库
gcc -o program program.c -lpthread
8.3 GDB 调试问题
问题:看不到源代码
Bash
# 确保编译时加了 -g 选项
gcc -g -o program program.c
# 使用 TUI 模式
gdb -tui ./program
九、openEuler 25.09 新特性
9.1 系统优势

9.2 开发工具优势

末尾 总结
通过本教程,您已经成功在 openEuler 25.09 上搭建了完整的 C/C++ 开发环境。现在您的系统具备:
✅ 核心能力
最新的 GCC/G++ 编译器(支持 C++20/C++23)
专业的 GDB 调试器和性能分析工具
丰富的系统开发库(网络、数据库、加密、解析等)
高效的开发辅助脚本和命令别名
下一步建议
实践项目:尝试编写多文件项目,使用 Makefile 或 CMake 管理构建
深入调试:学习 GDB 的高级功能(条件断点、watchpoint、core dump 分析)
版本控制:安装 Git(sudo dnf install git),学习代码版本管理
性能优化:使用 Valgrind、perf 等工具进行性能分析和内存检测
探索生态:了解 openEuler 的容器、虚拟化、云原生等特性
祝您在 openEuler 25.09 上开发顺利!🎊
如果您正在寻找面向未来的开源操作系统,不妨看看DistroWatch 榜单中快速上升的 openEuler:distrowatch.com/table-mobil...,一个由开放原子开源基金会孵化、支持"超节点"场景的Linux 发行版。 openEuler官网:www.openeuler.openatom.cn/zh/