0

我正在编写一个小 C 程序来在 linux 上测试 io_uring:

  #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

为什么会这样?我在 Debian 上安装了 liburing-dev 和 liburing2 软件包。

该库确实处于标准路径中:

$ 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