首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cray上的libxml2不可用

Cray上的libxml2不可用
EN

Stack Overflow用户
提问于 2018-03-18 20:08:45
回答 1查看 109关注 0票数 0

我需要在想要在Cray机器上编译的项目中使用libxml2。原则上它是安装的,有一个xml2-config程序会给我一个链接器标志:

代码语言:javascript
复制
$ xml2-config --libs
-lxml2 -L/lib64 -lz -llzma -lm -ldl

我有一个非常简单的测试程序:

代码语言:javascript
复制
$ cat test.c
int main() { return 0; }

虽然原则上不需要,但我可以用gcc test.c -lxml2 -L/lib64 -lz -llzma -lm -ldl很好地编译它。但是,对于Cray编译器,它不起作用:

代码语言:javascript
复制
$ cc test.c -lxml2 -L/lib64 -lz -llzma -lm -ldl
/opt/cray/pe/cce/8.6.5/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld: cannot find -lxml2
/opt/cray/pe/cce/8.6.5/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld: cannot find -llzma

Cray wrapped编译器的情况也是如此:

代码语言:javascript
复制
$ module swap PrgEnv-cray PrgEnv-intel

$ cc test.c -lxml2 -L/lib64 -lz -llzma -lm -ldl
ld: cannot find -lxml2
ld: cannot find -llzma

我需要使用Cray wrapped编译器来获得适当的MPI和巨型页面到我的程序中。

有没有什么我可以做的(除了尝试自己编译libxml2,参见my other question)来链接这个链接?

EN

回答 1

Stack Overflow用户

发布于 2018-03-19 03:30:45

如果确实安装了libxml2,那么看起来xml2-config是在骗你。我最好的猜测是libxml2的安装位置不同于它的构建位置,或者它在安装后被移动了。在任何情况下,xml2-config --libs的输出都假定在您的系统上,libxml2安装在默认库搜索路径中,liblzma和其他所需的库安装在默认库搜索路径或/lib64中(如果这还不在搜索路径中)。事实上,他们不是。

与其从头开始构建这些库,最好的办法是找到它们的实际安装位置,并在构建程序时将相应的-L选项传递给链接器:

代码语言:javascript
复制
cc test.c -L/path/to/libxml2/directory -lxml2 -lz -llzma -lm -ldl
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49347699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档