我正在尝试在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标志起作用?
答案 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
。