0

Linux で io_uring をテストするための小さな C プログラムを作成しています。

  #ifndef _GNU_SOURCE
  #define _GNU_SOURCE
  #endif

  #include <stdio.h>
  #include <stdlib.h>
  #include <unistd.h>
  #include <fcntl.h>
  #include <errno.h>
  #include <string.h>
  #include <liburing.h>
  #include <sys/stat.h>
  #include <sys/ioctl.h>

  int main(int argc, char *argv[])
  {
        struct io_uring ring;

        io_uring_queue_init(1, &ring, 0);

        return 0;
  }

しかし、コンパイル時にエラーが発生します:

$ gcc -luring io_uring_test.c 
/usr/bin/ld: /tmp/cc6Iqq1Z.o: in function `main':
io_uring_test.c:(.text+0x329): undefined reference to `io_uring_queue_init'
collect2: error: ld returned 1 exit status

これはなぜですか?パッケージ liburing-dev と liburing2 が Debian にインストールされています。

そしてライブラリは確かに標準パスにあります:

$ find /usr -name '*uring*'
/usr/share/doc/liburing2
/usr/share/doc/liburing-dev
/usr/share/doc/liburing-dev/examples/io_uring-test.c
/usr/share/doc/liburing-dev/examples/io_uring-cp.c
/usr/share/man/man3/io_uring_get_sqe.3.gz
/usr/share/man/man3/io_uring_queue_exit.3.gz
/usr/share/man/man3/io_uring_queue_init.3.gz
/usr/share/man/man7/io_uring.7.gz
/usr/share/man/man2/io_uring_setup.2.gz
/usr/share/man/man2/io_uring_register.2.gz
/usr/share/man/man2/io_uring_enter.2.gz
/usr/include/liburing.h
/usr/include/linux/io_uring.h
/usr/include/liburing
/usr/include/liburing/io_uring.h
/usr/lib/x86_64-linux-gnu/liburing.a
/usr/lib/x86_64-linux-gnu/liburing.so
/usr/lib/x86_64-linux-gnu/liburing.so.2
/usr/lib/x86_64-linux-gnu/liburing.so.2.1.0
/usr/lib/x86_64-linux-gnu/pkgconfig/liburing.pc

何が間違っているのかわかりません:(

4

0 に答える 0