如何将Eigen编译为.so、共享库及DLL文件?
将Eigen编译为共享库(.so)和DLL的方法
Linux 平台编译 .so 共享库
- 获取Eigen源码包并解压,进入源码根目录
- 创建并切换到构建目录:
mkdir build && cd build - 执行CMake配置,开启共享库编译选项:
关闭文档和测试编译可大幅加快构建速度cmake -DBUILD_SHARED_LIBS=ON -DEIGEN_BUILD_DOC=OFF -DEIGEN_BUILD_TESTING=OFF .. - 启动编译:
make -j$(nproc) - 编译完成后,
build/lib目录下会生成libeigen3.so(或同系列命名的共享库文件),可将其复制到系统库目录(如/usr/local/lib),或在链接其他库时指定该文件路径。
Windows 平台编译 DLL
- 下载Eigen源码并解压,打开CMake GUI工具
- 设置Eigen源码根目录为
Where is the source code,新建一个build文件夹作为Where to build the binaries路径 - 点击
Configure,选择对应版本的Visual Studio(如VS2022)及目标平台(x64/x86) - 在CMake变量列表中勾选
BUILD_SHARED_LIBS,同时取消EIGEN_BUILD_DOC和EIGEN_BUILD_TESTING选项 - 再次点击
Configure直到无红色未配置项,点击Generate生成VS工程文件 - 打开生成的VS工程,切换到
Release模式,右键点击INSTALL项目选择生成 - 编译完成后,构建目录的
bin/Release下会生成eigen3.dll,lib/Release下会得到对应的导入库eigen3.lib,后续链接其他项目时需使用该导入库。
注意:Eigen本质以模板库为主,编译为共享库后仅会预编译部分模板实例,多数模板仍需在使用时实时实例化。该方案可减少其他共享库对Eigen头文件的直接依赖,但需注意模板实例化的版本兼容性问题。
内容的提问来源于stack exchange,提问作者xxxLD
相关产品推荐
相关产品推荐

