安装xlnt之后,带有-lxnt标志的G ++错误

时间:2019-05-15 14:38:40

标签: c++ ld

我正在尝试在Ubuntu 18上安装xlnt库。我已经按照仓库中的instructions所述完全安装了xlnt。当我尝试编译代码时,会弹出以下错误:

/usr/bin/ld: cannot find -lxlnt
collect2: error: ld returned 1 exit status
makefile:204: recipe for target 'BOF-debug-static' failed
make: *** [BOF-debug-static] Error 1

我一直在安装其他库来使代码正常工作,并且我注意到其他库正在/ usr / local / lib中创建.a文件以及其他一些.la和.so文件。安装xlnt时,它不会创建任何.a文件,但会创建.so和.so.1.2文件。不确定是否相关,但这是我注意到的。

如何使xlnt可被g ++发现并使-lxlnt标志起作用?

1 个答案:

答案 0 :(得分:0)

您正在建立的目标BOF-debug-static显然是要求 使用-static链接选项的完全静态链接,或者可能是 请求特别是libxlnt的静态链接,并带有链接选项,例如:

-Wl,-Bstatic -lxlnt -Wl,-Bdynamic

由于您已经观察到,libxlnt默认情况下仅提供共享/动态库libzlint.so(-> libzlint.so.X.Y.Z), 并且没有静态库libzlnt.a,则链接器在以下情况下会忽略共享库 需要静态链接-lxlnt并说:

/usr/bin/ld: cannot find -lxlnt

您不能静态链接共享库。

但是,如果您使用以下方式配置CMake构建系统:

cmake -DSTATIC=ON [your previous options...]

然后make将建立一个静态库,并运行make install(以root用户身份)将创建/usr/local/lib/libxlnt.a