Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在安装有liburing ubuntu系统下,编译pika失败 #1457

Closed
ghost opened this issue May 7, 2023 · 2 comments · Fixed by #1489
Closed

在安装有liburing ubuntu系统下,编译pika失败 #1457

ghost opened this issue May 7, 2023 · 2 comments · Fixed by #1489

Comments

@ghost
Copy link

ghost commented May 7, 2023

系统ubuntu
测试条件:安装liburing
编译pika unstable分支报错
`
/usr/bin/cmake -E cmake_link_script CMakeFiles/pika.dir/link.txt --verbose=1

/usr/bin/c++ -pthread -Wl,--no-as-needed -ldl -msse -msse4.2 -O2 -static-libgcc -static-libstdc++ CMakeFiles/pika.dir/src/pika.cc.o CMakeFiles/pika.dir/src/pika_admin.cc.o CMakeFiles/pika.dir/src/pika_auxiliary_thread.cc.o CMakeFiles/pika.dir/src/pika_binlog.cc.o CMakeFiles/pika.dir/src/pika_binlog_reader.cc.o CMakeFiles/pika.dir/src/pika_binlog_transverter.cc.o CMakeFiles/pika.dir/src/pika_bit.cc.o CMakeFiles/pika.dir/src/pika_client_conn.cc.o CMakeFiles/pika.dir/src/pika_client_processor.cc.o CMakeFiles/pika.dir/src/pika_cluster.cc.o CMakeFiles/pika.dir/src/pika_cmd_table_manager.cc.o CMakeFiles/pika.dir/src/pika_command.cc.o CMakeFiles/pika.dir/src/pika_conf.cc.o CMakeFiles/pika.dir/src/pika_consensus.cc.o CMakeFiles/pika.dir/src/pika_data_distribution.cc.o CMakeFiles/pika.dir/src/pika_dispatch_thread.cc.o CMakeFiles/pika.dir/src/pika_geo.cc.o CMakeFiles/pika.dir/src/pika_geohash.cc.o CMakeFiles/pika.dir/src/pika_geohash_helper.cc.o CMakeFiles/pika.dir/src/pika_hash.cc.o CMakeFiles/pika.dir/src/pika_hyperloglog.cc.o CMakeFiles/pika.dir/src/pika_kv.cc.o CMakeFiles/pika.dir/src/pika_list.cc.o CMakeFiles/pika.dir/src/pika_meta.cc.o CMakeFiles/pika.dir/src/pika_monitor_thread.cc.o CMakeFiles/pika.dir/src/pika_partition.cc.o CMakeFiles/pika.dir/src/pika_pubsub.cc.o CMakeFiles/pika.dir/src/pika_repl_bgworker.cc.o CMakeFiles/pika.dir/src/pika_repl_client.cc.o CMakeFiles/pika.dir/src/pika_repl_client_conn.cc.o CMakeFiles/pika.dir/src/pika_repl_client_thread.cc.o CMakeFiles/pika.dir/src/pika_repl_server.cc.o CMakeFiles/pika.dir/src/pika_repl_server_conn.cc.o CMakeFiles/pika.dir/src/pika_repl_server_thread.cc.o CMakeFiles/pika.dir/src/pika_rm.cc.o CMakeFiles/pika.dir/src/pika_rsync_service.cc.o CMakeFiles/pika.dir/src/pika_server.cc.o CMakeFiles/pika.dir/src/pika_set.cc.o CMakeFiles/pika.dir/src/pika_slave_node.cc.o CMakeFiles/pika.dir/src/pika_slot.cc.o CMakeFiles/pika.dir/src/pika_stable_log.cc.o CMakeFiles/pika.dir/src/pika_statistic.cc.o CMakeFiles/pika.dir/src/pika_table.cc.o CMakeFiles/pika.dir/src/pika_zset.cc.o CMakeFiles/pika.dir/pika_inner_message.pb.cc.o CMakeFiles/pika.dir/pika_build_version.cc.o -o pika -L/home/chuande/workspace/pika/deps/lib64 -L/home/chuande/workspace/pika/deps/lib -Wl,-rpath,/home/chuande/workspace/pika/deps/lib64:/home/chuande/workspace/pika/deps/lib src/storage/libstorage.a src/net/libnet.a src/pstd/libpstd.a -Wl,-Bstatic -lglog -lrocksdb -lprotobuf -lgflags -lsnappy -lzstd -llz4 -lz -Wl,-Bdynamic ../deps/lib/libunwind.a ../deps/lib/libjemalloc.a ../deps/lib/librocksdb.a ../deps/lib/libsnappy.a ../deps/lib/libzstd.a ../deps/lib/liblz4.a ../deps/lib/libz.a ../deps/lib/libglog.a ../deps/lib/libgflags.a ../deps/lib/libunwind.a ../deps/lib/libjemalloc.a
/usr/bin/ld: /home/chuande/workspace/pika/deps/lib/librocksdb.a(fs_posix.cc.o): in function rocksdb::(anonymous namespace)::PosixFileSystem::PosixFileSystem()': fs_posix.cc:(.text+0x458): undefined reference to io_uring_queue_init'
/usr/bin/ld: /home/chuande/workspace/pika/deps/lib/librocksdb.a(fs_posix.cc.o): in function rocksdb::(anonymous namespace)::PosixFileSystem::Poll(std::vector<void*, std::allocator<void*> >&, unsigned long)': fs_posix.cc:(.text+0x2623): undefined reference to __io_uring_get_cqe'
/usr/bin/ld: /home/chuande/workspace/pika/deps/lib/librocksdb.a(fs_posix.cc.o): in function rocksdb::(anonymous namespace)::PosixFileSystem::AbortIO(std::vector<void*, std::allocator<void*> >&)': fs_posix.cc:(.text+0x3e4e): undefined reference to io_uring_submit'
/usr/bin/ld: fs_posix.cc:(.text+0x3fad): undefined reference to __io_uring_get_cqe' /usr/bin/ld: /home/chuande/workspace/pika/deps/lib/librocksdb.a(io_posix.cc.o): in function rocksdb::PosixRandomAccessFile::ReadAsync(rocksdb::FSReadRequest&, rocksdb::IOOptions const&, std::function<void (rocksdb::FSReadRequest const&, void*)>, void*, void**, std::function<void (void*)>, rocksdb::IODebugContext)':
io_posix.cc:(.text+0x8999): undefined reference to io_uring_submit' /usr/bin/ld: io_posix.cc:(.text+0x8aa8): undefined reference to io_uring_queue_init'
/usr/bin/ld: /home/chuande/workspace/pika/deps/lib/librocksdb.a(io_posix.cc.o): in function rocksdb::PosixRandomAccessFile::MultiRead(rocksdb::FSReadRequest*, unsigned long, rocksdb::IOOptions const&, rocksdb::IODebugContext*)': io_posix.cc:(.text+0x928f): undefined reference to io_uring_submit_and_wait'
/usr/bin/ld: io_posix.cc:(.text+0x9355): undefined reference to __io_uring_get_cqe' /usr/bin/ld: io_posix.cc:(.text+0xa47a): undefined reference to io_uring_queue_init'
/usr/bin/ld: io_posix.cc:(.text+0xa6bc): undefined reference to __io_uring_get_cqe' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/pika.dir/build.make:838: pika] Error 1 make[2]: Leaving directory '/home/chuande/workspace/pika/output' make[1]: *** [CMakeFiles/Makefile2:721: CMakeFiles/pika.dir/all] Error 2 make[1]: Leaving directory '/home/chuande/workspace/pika/output' make: *** [Makefile:101: all] Error 2

@lqxhub
Copy link
Collaborator

lqxhub commented May 11, 2023

原因:rocksdb 在8.0加了 uring支持,并且默认开启, 你的电脑上因为有这个库,所以在编译的时候被rocksdb自动编译进去了, 但是在链接的时候没有指定, 所以在链接的时候就出错了
rocksdb CMakeList

解决办法: 在pika的CMakeList中把rocksdb禁用 liburing
pika CmakeList

在这一行后面加一个

-DWITH_LIBURING=OFF

先这样试一下, 记得把结果反馈一下 谢谢

@ghost
Copy link
Author

ghost commented May 11, 2023

这样可以

原因:rocksdb 在8.0加了 uring支持,并且默认开启, 你的电脑上因为有这个库,所以在编译的时候被rocksdb自动编译进去了, 但是在链接的时候没有指定, 所以在链接的时候就出错了 rocksdb CMakeList

解决办法: 在pika的CMakeList中把rocksdb禁用 liburing pika CmakeList

在这一行后面加一个

-DWITH_LIBURING=OFF

先这样试一下, 记得把结果反馈一下 谢谢

这样可以

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant