pip install METIS
python 的包 METIS 需要在本地安装 METIS,METIS 本身又是依赖 GKlib 的,所以需要首先编译 GKlib,然后编译 METIS
编译 GKlib
make config CONFIG_FLAGS='-D BUILD_SHARED_LIBS=ON -D CMAKE_INSTALL_PREFIX=/home/hongyu_gao2001/GKlib'
编译 METIS
make config shared=1 cc=gcc prefix=/home/hongyu_gao2001/METIS gklib_path=/home/hongyu_gao2001/GKlib
这里 gklib_path
或许是重要的,不知道不加能不能行
undefined symbol
编译后执行 python 程序报错 libmetis.so: undefined symbol: gk_jbufs
ldd libmetis.so
会发现并没有 libGKlib.so
$ ldd libmetis.so
linux-vdso.so.1 (0x00007fff1b54c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000079f3f6980000)
/lib64/ld-linux-x86-64.so.2 (0x000079f3f6bf9000)
最终的解决方案来自这里。
实际做的处理就是向 libmetis/CMakeLists.txt
中添加了一句 target_link_libraries(metis GKlib)
然后 ldd
的结果中就应该会包含 libGKlib.so
ldd libmetis.so
linux-vdso.so.1 (0x00007ffe573f8000)
libGKlib.so => /home/hongyu_gao2001/GKlib/lib/libGKlib.so (0x00007f8291508000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f82912d6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8291594000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f82911ef000)
所以实际原因应该就是即使 GKlib 正确安装了,但是还链接上,不过这个问题很神奇,因为我明明看到编译指令中是包含 -lGKlib
的,但是最后居然没有链接上。
分类:
Graph Computing
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理