我需要在要在 Cray 机器上编译的项目中使用 libxml2。原则上它已安装,有一个xml2-config
程序可以给我链接器标志:
$ xml2-config --libs
-lxml2 -L/lib64 -lz -llzma -lm -ldl
我有一个非常简单的测试程序:
$ cat test.c
int main() { return 0; }
虽然原则上不需要,但我可以gcc test.c -lxml2 -L/lib64 -lz -llzma -lm -ldl
很好地编译它。但是,对于 Cray 编译器,它不起作用:
$ 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 包装的英特尔编译器相同的故事:
$ 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 包装的编译器才能将正确的 MPI 和大页面放入我的程序中。
有什么我可以做的(除了尝试自己编译 libxml2,请参阅我的其他问题)来获得这个链接?