第02章 - 环境搭建与安装配置
第02章 - 环境搭建与安装配置
2.1 系统要求
2.1.1 支持的操作系统
LibreDWG可以在多种操作系统上编译和运行:
| 操作系统 | 支持状态 | 推荐程度 |
|---|---|---|
| Linux (Ubuntu/Debian) | ✓ 完全支持 | ⭐⭐⭐⭐⭐ |
| Linux (Fedora/RHEL/CentOS) | ✓ 完全支持 | ⭐⭐⭐⭐⭐ |
| Linux (Arch) | ✓ 完全支持 | ⭐⭐⭐⭐⭐ |
| Windows (MSYS2/MinGW) | ✓ 完全支持 | ⭐⭐⭐⭐ |
| Windows (Visual Studio) | ✓ 通过CMake支持 | ⭐⭐⭐ |
| macOS | ✓ 完全支持 | ⭐⭐⭐⭐ |
| FreeBSD | ✓ 支持 | ⭐⭐⭐ |
2.1.2 必需的依赖
基本构建工具:
| 依赖项 | 版本要求 | 说明 |
|---|---|---|
| C99编译器 | GCC 4.8+ 或 Clang 3.5+ | 必需 |
| make | 任意版本 | 必需 |
| autoconf | 2.69+ | 源码编译需要 |
| automake | 1.14+ | 源码编译需要 |
| libtool | 2.4+ | 必需 |
2.1.3 可选依赖
| 依赖项 | 用途 | 推荐安装 |
|---|---|---|
| libiconv | 代码页转换(提高性能) | 推荐 |
| libmimalloc | 更快的内存分配 | 可选 |
| pslib | DWG转PostScript | 可选 |
| pcre2 (8bit+16bit) | dwggrep正则表达式支持 | 推荐 |
| gperf | 更新静态哈希表 | 开发者需要 |
| cmake | 替代构建系统 | 可选 |
| ninja | 快速构建 | 可选 |
| texinfo | 构建文档 | 可选 |
| SWIG 1.7+ | Python/Perl绑定 | 推荐 |
| Python开发头文件 | Python绑定 | 推荐 |
| Perl 5 | Perl绑定 | 可选 |
| doxygen | 生成参考手册 | 可选 |
| jq | JSON过滤器后端 | 可选 |
2.2 Linux环境安装
2.2.1 Ubuntu/Debian系统
方法一:从源码编译(推荐)
# 1. 安装依赖
sudo apt update
sudo apt install -y \
build-essential \
autoconf \
automake \
libtool \
pkg-config \
git \
libiconv-hook-dev \
libpcre2-dev \
libps-dev \
swig \
python3-dev \
texinfo \
doxygen \
jq
# 2. 克隆源码
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg
# 3. 生成配置脚本
sh ./autogen.sh
# 4. 配置
./configure --prefix=/usr/local
# 5. 编译
make -j$(nproc)
# 6. 运行测试(可选)
make check
# 7. 安装
sudo make install
# 8. 更新动态链接库缓存
sudo ldconfig
方法二:使用预编译包(如果可用)
# 某些发行版可能提供预编译包
sudo apt install libredwg-dev libredwg-tools
2.2.2 Fedora/RHEL/CentOS系统
# 1. 安装依赖
sudo dnf install -y \
gcc \
make \
autoconf \
automake \
libtool \
pkgconfig \
git \
pcre2-devel \
swig \
python3-devel \
texinfo \
doxygen
# 2. 克隆并编译
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg
sh ./autogen.sh
./configure
make -j$(nproc)
sudo make install
sudo ldconfig
2.2.3 Arch Linux系统
# 1. 安装依赖
sudo pacman -S \
base-devel \
git \
pcre2 \
swig \
python \
texinfo \
doxygen
# 2. 可以从AUR安装(如果可用)
# yay -S libredwg
# 或从源码编译
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg
sh ./autogen.sh
./configure
make -j$(nproc)
sudo make install
2.2.4 验证安装
# 检查库是否正确安装
ldconfig -p | grep libredwg
# 检查头文件
ls /usr/local/include/dwg*.h
# 检查命令行工具
which dwg2dxf
dwg2dxf --version
# 检查pkg-config
pkg-config --modversion libredwg
2.3 Windows环境安装
2.3.1 使用MSYS2(推荐)
MSYS2是Windows上最方便的Unix-like开发环境。
步骤1:安装MSYS2
- 下载MSYS2安装程序:https://www.msys2.org/
- 运行安装程序,安装到默认位置(如
C:\msys64) - 启动MSYS2 MinGW 64-bit终端
步骤2:安装依赖
# 更新包管理器
pacman -Syu
# 安装构建工具和依赖
pacman -S \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-make \
autoconf \
automake \
libtool \
git \
mingw-w64-x86_64-pcre2 \
mingw-w64-x86_64-python \
mingw-w64-x86_64-swig
步骤3:编译LibreDWG
# 克隆源码
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg
# 生成配置
sh ./autogen.sh
# 配置(使用MinGW)
./configure --prefix=/mingw64
# 编译
make -j$(nproc)
# 安装
make install
2.3.2 使用CMake和Visual Studio
步骤1:安装必要软件
- 安装Visual Studio 2019/2022(包含C++开发工具)
- 安装CMake:https://cmake.org/download/
- 安装Git:https://git-scm.com/
步骤2:获取源码
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg
步骤3:使用CMake配置
# 创建构建目录
mkdir build
cd build
# 配置项目
cmake .. -G "Visual Studio 16 2019" -A x64
# 或使用Visual Studio 2022
cmake .. -G "Visual Studio 17 2022" -A x64
步骤4:编译
# 命令行编译
cmake --build . --config Release
# 或在Visual Studio中打开解决方案编译
2.3.3 使用预编译二进制文件
LibreDWG提供Windows预编译版本:
- 访问 https://github.com/LibreDWG/libredwg/releases
- 下载适合您系统的预编译包
- 解压到目标目录
- 将bin目录添加到系统PATH
# 设置环境变量(示例)
set PATH=%PATH%;C:\libredwg\bin
2.4 macOS环境安装
2.4.1 使用Homebrew
# 1. 安装Xcode命令行工具
xcode-select --install
# 2. 安装Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 3. 安装依赖
brew install \
autoconf \
automake \
libtool \
pkg-config \
pcre2 \
swig \
python
# 4. 克隆并编译
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg
sh ./autogen.sh
./configure
make -j$(sysctl -n hw.ncpu)
sudo make install
2.4.2 使用MacPorts
# 安装依赖
sudo port install \
autoconf \
automake \
libtool \
pkgconfig \
pcre2 \
swig-python
# 编译步骤与上述相同
2.5 配置选项详解
2.5.1 configure脚本选项
运行./configure --help可查看所有选项,以下是常用选项:
安装路径选项:
--prefix=PREFIX # 安装前缀,默认/usr/local
--exec-prefix=EPREFIX # 可执行文件前缀
--libdir=DIR # 库文件目录
--includedir=DIR # 头文件目录
功能开关选项:
--enable-release # 发布模式(推荐用于生产)
--enable-trace # 启用运行时跟踪
--enable-debug # 启用调试模式(不稳定类支持)
--enable-gcov # 启用代码覆盖率
--disable-write # 禁用DWG写入功能
--disable-bindings # 禁用SWIG绑定
--disable-dxf # 禁用DXF相关模块
--disable-json # 禁用JSON模块
--disable-python # 禁用Python绑定
精度控制选项:
--with-dxf-precision=N # DXF小数位数(默认16,推荐6)
--with-geojson-precision=N # GeoJSON小数位数(RFC推荐6)
其他选项:
--with-perl-install=TYPE # Perl绑定安装位置
# vendor/arch/yes/no/site
2.5.2 推荐配置组合
开发调试配置:
./configure \
--enable-trace \
--enable-debug \
CFLAGS="-g -O0"
生产发布配置:
./configure \
--enable-release \
--with-dxf-precision=6 \
CFLAGS="-O2"
最小化构建配置:
./configure \
--disable-bindings \
--disable-dxf \
--disable-json
完整功能配置:
./configure \
--enable-trace \
--with-dxf-precision=6 \
--with-geojson-precision=6
2.6 环境变量配置
2.6.1 库路径配置
Linux/macOS:
# 添加到 ~/.bashrc 或 ~/.zshrc
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
# 可执行文件路径
export PATH=/usr/local/bin:$PATH
Windows(PowerShell):
# 临时设置
$env:PATH = "C:\libredwg\bin;$env:PATH"
# 永久设置(需要管理员权限)
[Environment]::SetEnvironmentVariable("PATH", "C:\libredwg\bin;$env:PATH", "User")
2.6.2 跟踪与调试环境变量
# 设置LibreDWG跟踪级别(0-9)
export LIBREDWG_TRACE=3
# 跟踪级别说明:
# 0 = 无输出
# 1-3 = 基本信息
# 4-6 = 详细信息
# 7-9 = 完全详细
2.7 IDE开发环境配置
2.7.1 Visual Studio Code配置
c_cpp_properties.json:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/local/include"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c99",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
tasks.json(构建任务):
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"-lredwg"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
2.7.2 CLion配置
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(MyDWGProject C)
set(CMAKE_C_STANDARD 99)
# 查找LibreDWG
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBREDWG REQUIRED libredwg)
# 添加可执行文件
add_executable(my_dwg_app main.c)
# 链接LibreDWG
target_include_directories(my_dwg_app PRIVATE ${LIBREDWG_INCLUDE_DIRS})
target_link_libraries(my_dwg_app ${LIBREDWG_LIBRARIES})
2.7.3 Qt Creator配置
.pro文件:
QT -= gui
CONFIG += c99 console
CONFIG -= app_bundle
SOURCES += main.c
# LibreDWG配置
unix {
LIBS += -lredwg
INCLUDEPATH += /usr/local/include
}
win32 {
LIBS += -LC:/libredwg/lib -lredwg
INCLUDEPATH += C:/libredwg/include
}
2.8 Python绑定安装
2.8.1 从源码安装Python绑定
# 确保已安装SWIG和Python开发头文件
# Ubuntu/Debian
sudo apt install swig python3-dev
# 编译时启用Python绑定
./configure --enable-python
make
sudo make install
# 或者单独构建Python绑定
cd bindings/python
python3 setup.py build
python3 setup.py install --user
2.8.2 验证Python绑定
#!/usr/bin/env python3
import libredwg
# 检查版本
print(f"LibreDWG version: {libredwg.LIBREDWG_VERSION}")
# 测试基本功能
dwg = libredwg.Dwg_Data()
print("Python绑定安装成功!")
2.8.3 Python虚拟环境配置
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# 或 venv\Scripts\activate # Windows
# 安装LibreDWG Python绑定
cd libredwg/bindings/python
pip install .
2.9 常见安装问题
2.9.1 问题诊断
问题1:找不到libredwg库
# 错误信息
error while loading shared libraries: libredwg.so: cannot open shared object file
# 解决方案
sudo ldconfig
# 或添加库路径
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
问题2:头文件找不到
# 错误信息
fatal error: dwg.h: No such file or directory
# 解决方案
# 检查头文件位置
find /usr -name "dwg.h" 2>/dev/null
# 编译时指定包含路径
gcc -I/usr/local/include ...
问题3:链接错误
# 错误信息
undefined reference to `dwg_read_file'
# 解决方案
# 确保链接顺序正确
gcc main.c -o main -lredwg # -lredwg 放在最后
问题4:autoconf/automake版本过低
# 错误信息
configure.ac:XX: error: possibly undefined macro: AC_XXX
# 解决方案
# 更新autotools
sudo apt install autoconf automake libtool
2.9.2 Windows特定问题
问题:DLL找不到
# 解决方案1:将DLL所在目录添加到PATH
set PATH=%PATH%;C:\libredwg\bin
# 解决方案2:将DLL复制到可执行文件目录
copy C:\libredwg\bin\libredwg.dll .\
问题:MSVC编译报错
确保:
1. 安装了stdint.h和inttypes.h(C99标准头文件)
2. 使用支持C99的编译器设置
3. CMake配置正确
2.9.3 macOS特定问题
问题:dylib加载失败
# 错误信息
dyld: Library not loaded: @rpath/libredwg.dylib
# 解决方案
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
# 或修复rpath
install_name_tool -add_rpath /usr/local/lib ./your_app
2.10 测试安装
2.10.1 运行LibreDWG测试套件
# 在源码目录中
make check
# 查看测试结果
cat test-suite.log
2.10.2 编写测试程序
test_install.c:
#include <stdio.h>
#include <dwg.h>
int main(void)
{
printf("LibreDWG安装测试\n");
printf("================\n");
Dwg_Data dwg;
// 初始化空的DWG结构
memset(&dwg, 0, sizeof(Dwg_Data));
printf("Dwg_Data结构大小: %zu bytes\n", sizeof(Dwg_Data));
printf("安装验证成功!\n");
return 0;
}
编译和运行:
gcc test_install.c -o test_install -lredwg
./test_install
2.10.3 测试命令行工具
# 创建测试脚本
cat > test_tools.sh << 'EOF'
#!/bin/bash
echo "测试LibreDWG命令行工具..."
# 测试dwg2dxf
if command -v dwg2dxf &> /dev/null; then
echo "✓ dwg2dxf 已安装"
dwg2dxf --version
else
echo "✗ dwg2dxf 未找到"
fi
# 测试dwglayers
if command -v dwglayers &> /dev/null; then
echo "✓ dwglayers 已安装"
else
echo "✗ dwglayers 未找到"
fi
# 测试dwggrep
if command -v dwggrep &> /dev/null; then
echo "✓ dwggrep 已安装"
else
echo "✗ dwggrep 未找到"
fi
echo "测试完成"
EOF
chmod +x test_tools.sh
./test_tools.sh
2.11 本章小结
本章详细介绍了LibreDWG的安装配置:
- 系统要求:了解了支持的操作系统和必需/可选依赖
- Linux安装:Ubuntu/Debian、Fedora/RHEL、Arch Linux的安装方法
- Windows安装:MSYS2、Visual Studio、预编译包三种方式
- macOS安装:使用Homebrew或MacPorts
- 配置选项:详细的configure选项和推荐配置组合
- 环境变量:库路径和调试相关的环境变量设置
- IDE配置:VS Code、CLion、Qt Creator的项目配置
- Python绑定:Python绑定的安装和验证
- 常见问题:安装过程中可能遇到的问题及解决方案
- 测试验证:验证安装是否成功的方法
下一章预告:第03章 - DWG文件格式详解 - 深入了解DWG文件的内部结构和数据组织方式。

浙公网安备 33010602011771号