【问题标题】:Linking error using C code to connect to Monetdb使用 C 代码连接到 Monetdb 时出现链接错误
【发布时间】:2019-02-15 01:34:43
【问题描述】:

我已经尝试编译here显示的代码:

但我遇到了链接错误。
我尝试了提到here的解决方案。

但是,我又收到了这个错误:

gcc main.c -I /usr/include/monetdb -lmapi
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用SHA224_Update'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
mnstr_settimeout'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用socket_rastream'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
mnstr_destroy'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用SHA384_Init'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
MD5_Final'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用RIPEMD160_Init'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
mnstr_errnr'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用RIPEMD160_Update'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
SHA384_Update'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用SHA224_Init'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
SHA256_Init'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用SHA512_Update'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
mnstr_init'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用block_stream'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
mnstr_write'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用SHA384_Final'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
SHA1_Update'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用mnstr_error'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
SHA512_Final'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义对SHA256_Final'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
mnstr_flush'的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用SHA1_Init'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
SHA224_Final'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用mnstr_read_block'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
mnstr_printf'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用SHA256_Update'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
isa_block_stream'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用mnstr_set_byteorder'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
mnstr_read'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用 socket_wastream'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
MD5_Init'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用RIPEMD160_Final'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
close_stream'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用MD5_Update'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
SHA1_Final'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so:未定义引用 open_wastream'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libmapi.so: undefined reference to
SHA512_Init'
collect2:错误:ld 返回 1 个退出状态

当我尝试解决方案时提到here:

pkg-config --libs monetdb-mapi and pkg-config --cflags monetdb-mapi

我收到了这个错误:

pkg-config 搜索路径中找不到包bzip2
或许您应该将包含 `bzip2.pc' 的目录添加到 PKG_CONFIG_PATH 环境变量中。
'monetdb-stream' 需要的包'bzip2',找不到

经过搜索,我发现 Debian 没有 bzip2.pc
我已经安装了以下库:

sudo apt-get install libmonetdb-client-dev
sudo apt-get install libmonetdb-stream-dev
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install liblzma-dev

因此,我们将不胜感激。
我的 Ubuntu 版本是 18.04

【问题讨论】:

  • 您似乎缺少与 libSSL 的链接(例如 -lssl,可能还有 -lcrypto)查看未找到的内容,例如“未定义对SHA224_Update 的引用”。见SHA224_Update
  • 非常感谢您的帮助

标签: c gcc linker-errors mapi monetdb


【解决方案1】:

感谢@David C. Rankin 提到的链接问题消失了: 这是完整的命令:

gcc main.c -I /usr/include/monetdb -lmapi -lssl -lcrypto -lstream -lcurl -llzma -lbz2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    相关资源
    最近更新 更多