Ubuntu(WSL)下Faiss项目编译失败:未定义引用问题求助
解决Ubuntu(WSL)下Faiss项目编译时MKL函数未定义引用问题
1. 确认Faiss编译时已启用MKL
如果之前编译Faiss时未明确绑定MKL,重新编译Faiss确保启用MKL支持:
# 进入Faiss源码目录 cd faiss rm -rf build && mkdir build && cd build # 启用MKL编译并安装Faiss cmake -DMKL=ON -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) sudo make install
2. 修改项目CMakeLists.txt,正确链接MKL库
原配置仅链接faiss和blas,未关联MKL的完整库文件,替换为以下配置:
project(faiss_clustering) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -Wall -pedantic -Wextra -fopenmp") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -fsanitize=address") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g -flto -ftree-vectorize -march=native") # 查找并配置Intel MKL find_package(MKL REQUIRED) include_directories(${MKL_INCLUDE_DIRS}) link_directories(${MKL_LIBRARY_DIRS}) add_definitions(${MKL_DEFINITIONS}) add_executable(faiss_clustering main.cpp) # 链接Faiss和MKL相关库 target_link_libraries(faiss_clustering PRIVATE faiss ${MKL_LIBRARIES})
3. 确保MKL环境变量正确加载(可选)
在WSL的~/.bashrc中添加MKL环境变量配置:
source /opt/intel/mkl/bin/mklvars.sh intel64
执行以下命令使配置生效:
source ~/.bashrc
4. 清理并重新构建项目
进入项目build目录,清理旧构建文件后重新编译:
cd /mnt/d/codes/AVD/AVD/faiss_clustering/build rm -rf * cmake .. make -j$(nproc)
内容的提问来源于stack exchange,提问作者Jakub Kudlej
相关产品推荐
相关产品推荐

