Компоновщик, не находящий libsystemd

Я пытаюсь записать a systemd сервис, который использует сторожевой таймер, и после

sudo apt install libsystemd-dev

Я проверил, чтобы удостовериться, что это было доступно:

$ ldconfig -p |grep systemd
    libsystemd.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libsystemd.so.0
    libsystemd.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libsystemd.so
    libnss_systemd.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libnss_systemd.so.2

Затем проверенный для проверки компоновщик мог найти его:

$ echo "int main(){}" | gcc -x c++ -Wl,--no-as-needed -llibsystemd - && ldd a.out | grep libsystemd
/usr/bin/ld: cannot find -llibsystemd
collect2: error: ld returned 1 exit status

Почему не может ld найти его?

0
задан 5 March 2019 в 12:51

1 ответ

-llibsystemd не ищет libsystemd - это ищет liblibsystemd

Как отмечено в man g++:

  -l library
       The linker searches a standard list of directories for the library,
       which is actually a file named liblibrary.a.  The linker then uses
       this file as if it had been specified precisely by name.

Так, Вы хотите -lsystemd

echo "int main(){}" | gcc -x c++ -Wl,--no-as-needed -lsystemd - && ldd a.out | grep libsystemd
1
ответ дан 26 October 2019 в 02:41

Другие вопросы по тегам:

Похожие вопросы: