ZKCM-Library 找不到 MPFR 库
zkcm-library not finding the mpfr-library
我刚刚在我的 kubuntu 机器上安装了 zkcm 库,我在编译 c++ 代码时遇到了问题。
我已经安装了gmp
和mpfr
库并检查它们是否有效;
mpfr_t m1, m2, m3;
mpfr_init(m1); mpfr_init(m2); mpfr_init(m3);
mpfr_mul(m1, m2, m3, MPFR_RNDN);
编译并运行。
然后我尝试使用zkcm
;我尝试遵守该行
zkcm_matrix m;
并得到一堆看似关于zkcm
找不到mpfr
的错误; 这是输出的开头:
/usr/local/lib/libzkcm.a(zkcm_c.o): In function `zkcm_init_ri(zkcm*, double, double)':
/home/jorgen/Downloads/zkcm_lib-0.4.0/srcs/zkcm_c.c:126: undefined reference to `mpfr_inits'
/home/jorgen/Downloads/zkcm_lib-0.4.0/srcs/zkcm_c.c:127: undefined reference to `mpfr_set_d'
/usr/local/lib/libzkcm.a(zkcm_c.o): In function `zkcm_init_ri_str(zkcm*, char const*, char const*)':
/home/jorgen/Downloads/zkcm_lib-0.4.0/srcs/zkcm_c.c:132: undefined reference to `mpfr_inits'
/home/jorgen/Downloads/zkcm_lib-0.4.0/srcs/zkcm_c.c:136: undefined reference to `mpfr_set_str'
/home/jorgen/Downloads/zkcm_lib-0.4.0/srcs/zkcm_c.c:134: undefined reference to `mpfr_set_ui'
我试图按照zkcm
中的说明进行操作;我有台词
#include "mpfr.h"
#include "zkcm.hpp"
我编译代码(称为test.cpp
)
g++ test.cpp -msse2 -std=c++11 -O2 -lm -lmpfr -lgmp -lgmpxx -lzkcm -o test
有什么想法吗?
库顺序不正确:根据错误消息,zkcm 使用 MPFR,因此-lzkcm
应放在 -lmpfr
之前( 本身应放在 -lgmp
之前,因为 MPFR 使用 GMP)。
否则,将发生以下情况:如果链接器发现test.cpp
(或某些依赖项)未使用的 MPFR 符号,它将删除该符号。如果 zkcm 使用这样的符号,这将产生错误,因为-lzkcm
稍后出现在命令行中。这也解释了为什么某些 MPFR 符号可能会出错,而其他符号则不会出错(当test.cpp
代码和 zkcm 代码更改时,错误可能会出现和消失)。
这应该足以解决这里的问题。但是看看这个答案 "链接器 顺序 - GCC" 的更一般的规则(这个答案也涉及循环依赖)。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- ZKCM-Library 找不到 MPFR 库