安装 xlnt 后出现 -lxnt 标志的 G++ 错误
G++ error with -lxnt flag after xlnt is installed
我正在尝试在 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 文件。不确定这是否相关,但这是我注意到的。
如何让 g++ 发现 xlnt 并使 -lxlnt 标志起作用?
您正在构建的目标 BOF-debug-static
显然是一个要求
完全静态的 linkage,带有 -static
linkage 选项,或者可能是
请求静态 linkage 特别是 libxlnt
,带有 linkage 选项,例如:
-Wl,-Bstatic -lxlnt -Wl,-Bdynamic
因为,正如您观察到的,libxlnt
默认情况下只提供一个 shared/dynamic 库 libzlint.so
( -> libzlint.so.X.Y.Z)
,
并且没有静态库 libzlnt.a
,linker 会忽略共享库
需要静态 link -lxlnt
并说:
/usr/bin/ld: cannot find -lxlnt
您不能link静态共享库。
但是,如果您将 CMake 构建系统配置为:
cmake -DSTATIC=ON [your previous options...]
然后 make
将构建一个静态库,运行 make install
(作为 root)将创建 /usr/local/lib/libxlnt.a
.
我正在尝试在 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 文件。不确定这是否相关,但这是我注意到的。
如何让 g++ 发现 xlnt 并使 -lxlnt 标志起作用?
您正在构建的目标 BOF-debug-static
显然是一个要求
完全静态的 linkage,带有 -static
linkage 选项,或者可能是
请求静态 linkage 特别是 libxlnt
,带有 linkage 选项,例如:
-Wl,-Bstatic -lxlnt -Wl,-Bdynamic
因为,正如您观察到的,libxlnt
默认情况下只提供一个 shared/dynamic 库 libzlint.so
( -> libzlint.so.X.Y.Z)
,
并且没有静态库 libzlnt.a
,linker 会忽略共享库
需要静态 link -lxlnt
并说:
/usr/bin/ld: cannot find -lxlnt
您不能link静态共享库。
但是,如果您将 CMake 构建系统配置为:
cmake -DSTATIC=ON [your previous options...]
然后 make
将构建一个静态库,运行 make install
(作为 root)将创建 /usr/local/lib/libxlnt.a
.