我正在尝试编译以下 foo.c:
#include <systemd/sd-journal.h>
int main(int argc, char *argv[]) {
sd_journal_print(LOG_NOTICE, "Hello World");
return 0;
}
和
gcc `pkg-config --cflags --libs libsystemd` foo.c
得到一个 ld 错误:
undefined reference to 'sd_journal_print_with_location'
当我运行nm /lib/x86_64-linux-gnu/libsystemd.so.0.14.0
我认为应该包含这个和其他 sd_ 函数定义的库时,我得到:没有符号。(与其他符号列表实用程序的结果相同)。
没有符号的共享库?
我在 Ubuntu 16.04 上,用 apt 安装了 libsystemd-dev。一些来源引用 libsystemd-journal-dev,但我不相信它存在于我的发行版中。
我要做的就是弄清楚如何使用 systemd 的日志进行系统范围的日志记录。我知道我可能可以使用 syslog,它会在幕后使用 systemd,但更愿意了解这里发生了什么。
这是一个动态符号:
要构建您的程序,您需要在其用户之后指定库:
你需要的包是
libsystemd-dev
.