[GH-ISSUE #518] Link error when building p2p store #178

Closed
opened 2026-10-29 21:10:34 +00:00 by bsakaguchi · 1 comment
Owner

Originally created by @realShengYao on GitHub (Jun 18, 2025).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/518

Originally assigned to: @alogfans on GitHub.

When I try to build the binary following the build guide in the docs.

cmake .. -DUSE_CUDA=ON -DWITH_STORE=ON -DWITH_P2P_STORE=ON -DUSE_ETCD=ON
make -j

Then I got this problem:

$ make -j
[  1%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/endpoint_store.cpp.o
[  2%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/AllocationClass.cpp.o
[  3%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/rdma_context.cpp.o
[  4%] Building CXX object mooncake-transfer-engine/src/transport/tcp_transport/CMakeFiles/tcp_transport.dir/tcp_transport.cpp.o
[  7%] Building CXX object mooncake-transfer-engine/src/common/base/CMakeFiles/base.dir/status.cpp.o
[  7%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/rdma_endpoint.cpp.o
[  8%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/MemoryPool.cpp.o
[  9%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/MemoryAllocator.cpp.o
[ 10%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/MemoryPoolManager.cpp.o
[ 14%] Building Go shared library
[ 14%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/rdma_transport.cpp.o
[ 15%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/worker_pool.cpp.o
[ 15%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/Slab.cpp.o
[ 16%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/SlabAllocator.cpp.o
[ 17%] Linking CXX static library libbase.a
[ 17%] Built target base
^@[ 17%] Built target rdma_transport
[ 18%] Linking CXX static library libcachelib_memory_allocator.a
[ 18%] Built target cachelib_memory_allocator
[ 18%] Built target build_etcd_wrapper
[ 18%] Built target tcp_transport
[ 20%] Building CXX object mooncake-transfer-engine/src/transport/CMakeFiles/transport.dir/transport.cpp.o
[ 20%] Built target transport
[ 21%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/config.cpp.o
[ 22%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/memory_location.cpp.o
[ 23%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/multi_transport.cpp.o
[ 24%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/topology.cpp.o
[ 25%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_engine.cpp.o
[ 27%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_engine_c.cpp.o
[ 28%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_metadata.cpp.o
[ 29%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_metadata_dump.cpp.o
[ 30%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_metadata_plugin.cpp.o
/root/Mooncake/mooncake-transfer-engine/src/multi_transport.cpp: In member function 'mooncake::Status mooncake::MultiTransport::getTransferStatus(mooncake::MultiTransport::BatchID, size_t, mooncake::MultiTransport::TransferStatus&)':
/root/Mooncake/mooncake-transfer-engine/src/multi_transport.cpp:137:42: warning: comparison of integer expressions of different signedness: 'long int' and 'long unsigned int' [-Wsign-compare]
  137 |                 if (ts > 0 && current_ts > ts &&
      |                               ~~~~~~~~~~~^~~~
/root/Mooncake/mooncake-transfer-engine/src/multi_transport.cpp:138:37: warning: comparison of integer expressions of different signedness: 'long unsigned int' and 'const int64_t' {aka 'const long int'} [-Wsign-compare]
  138 |                     current_ts - ts > kPacketDeliveryTimeout) {
      |                     ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
[ 31%] Linking CXX static library libtransfer_engine.a
[ 31%] Built target transfer_engine
[ 32%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/transport_uint_test.dir/transport_uint_test.cpp.o
[ 34%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/rdma_transport_test2.dir/rdma_transport_test2.cpp.o
[ 35%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/rdma_loopback_test.dir/rdma_loopback_test.cpp.o
[ 37%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/topology_test.dir/topology_test.cpp.o
[ 37%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/rdma_transport_test.dir/rdma_transport_test.cpp.o
[ 38%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/transfer_metadata_test.dir/transfer_metadata_test.cpp.o
[ 40%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/tcp_transport_test.dir/tcp_transport_test.cpp.o
[ 42%] Building CXX object mooncake-transfer-engine/example/CMakeFiles/memory_pool.dir/memory_pool.cpp.o
[ 42%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/memory_location_test.dir/memory_location_test.cpp.o
[ 43%] Building CXX object mooncake-transfer-engine/example/CMakeFiles/transfer_engine_bench.dir/transfer_engine_bench.cpp.o
[ 45%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/allocator.cpp.o
[ 47%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/master_service.cpp.o
[ 47%] Building CXX object mooncake-integration/CMakeFiles/engine.dir/transfer_engine/transfer_engine_py.cpp.o
[ 49%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/client.cpp.o
[ 49%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/types.cpp.o
[ 50%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/master_metric_manager.cpp.o
[ 54%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/master_client.cpp.o
[ 54%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/ha_helper.cpp.o
[ 54%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/utils.cpp.o
[ 56%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/transfer_task.cpp.o
[ 56%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/etcd_helper.cpp.o
/root/Mooncake/mooncake-transfer-engine/tests/tcp_transport_test.cpp:37:13: warning: 'void checkCudaError(cudaError_t, const char*)' defined but not used [-Wunused-function]
   37 | static void checkCudaError(cudaError_t result, const char *message) {
      |             ^~~~~~~~~~~~~~
/root/Mooncake/mooncake-store/src/master_service.cpp: In member function 'mooncake::ErrorCode mooncake::MasterService::GetAllKeys(std::vector<std::__cxx11::basic_string<char> >&)':
/root/Mooncake/mooncake-store/src/master_service.cpp:175:22: warning: comparison of integer expressions of different signedness: 'int' and 'const size_t' {aka 'const long unsigned int'} [-Wsign-compare]
  175 |     for(int i = 0; i < kNumShards; i++) {
      |                    ~~^~~~~~~~~~~~
[ 57%] Linking CXX executable memory_location_test
[ 57%] Built target memory_location_test
[ 58%] Linking CXX executable transfer_metadata_test
[ 60%] Linking CXX executable topology_test
[ 61%] Linking CXX executable transport_uint_test
[ 61%] Built target transfer_metadata_test
[ 61%] Built target topology_test
[ 62%] Linking CXX executable memory_pool
[ 62%] Built target transport_uint_test
[ 62%] Built target memory_pool
[ 63%] Linking CXX executable rdma_transport_test
[ 64%] Linking CXX executable rdma_loopback_test
[ 64%] Built target rdma_transport_test
[ 64%] Built target rdma_loopback_test
[ 65%] Linking CXX executable transfer_engine_bench
[ 67%] Linking CXX executable tcp_transport_test
[ 67%] Built target transfer_engine_bench
[ 68%] Linking CXX executable rdma_transport_test2
[ 68%] Built target tcp_transport_test
[ 68%] Built target rdma_transport_test2
[ 69%] Linking CXX shared module engine.cpython-313-x86_64-linux-gnu.so
[ 69%] Built target engine
# command-line-arguments
/root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.1.linux-amd64/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/gcc -m64 -Wl,--build-id=0x350eb13b24935f2352e40fc8e2f2a8a31427720f -o $WORK/b001/exe/a.out -Wl,--export-dynamic-symbol=_cgo_panic -Wl,--export-dynamic-symbol=_cgo_topofstack -Wl,--export-dynamic-symbol=crosscall2 -Wl,--compress-debug-sections=zlib /tmp/go-link-1309697344/go.o /tmp/go-link-1309697344/000000.o /tmp/go-link-1309697344/000001.o /tmp/go-link-1309697344/000002.o /tmp/go-link-1309697344/000003.o /tmp/go-link-1309697344/000004.o /tmp/go-link-1309697344/000005.o /tmp/go-link-1309697344/000006.o /tmp/go-link-1309697344/000007.o /tmp/go-link-1309697344/000008.o /tmp/go-link-1309697344/000009.o /tmp/go-link-1309697344/000010.o /tmp/go-link-1309697344/000011.o /tmp/go-link-1309697344/000012.o /tmp/go-link-1309697344/000013.o /tmp/go-link-1309697344/000014.o /tmp/go-link-1309697344/000015.o /tmp/go-link-1309697344/000016.o /tmp/go-link-1309697344/000017.o /tmp/go-link-1309697344/000018.o /tmp/go-link-1309697344/000019.o /tmp/go-link-1309697344/000020.o /tmp/go-link-1309697344/000021.o -L/usr/local/cuda/lib64 -lcuda -L/usr/local/cuda/lib64 -lcuda -lresolv -L/usr/local/cuda/lib64 -lcuda -lpthread -no-pie -L/root/Mooncake/build/mooncake-transfer-engine/src -L/root/Mooncake/build/mooncake-transfer-engine/src/common/base -ltransfer_engine -lbase -lstdc++ -lnuma -lglog -libverbs -ljsoncpp -L/root/Mooncake/build/mooncake-common/etcd -letcd_wrapper -lcurl
/usr/bin/ld: /root/Mooncake/build/mooncake-transfer-engine/src/libtransfer_engine.a(topology.cpp.o): in function `mooncake::Topology::discover(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)':
/root/Mooncake/mooncake-transfer-engine/src/topology.cpp:167: undefined reference to `cudaGetDeviceCount'
/usr/bin/ld: /root/Mooncake/build/mooncake-transfer-engine/src/libtransfer_engine.a(topology.cpp.o): in function `discoverCudaTopology':
/root/Mooncake/mooncake-transfer-engine/src/topology.cpp:172: undefined reference to `cudaDeviceGetPCIBusId'
/usr/bin/ld: /root/Mooncake/build/mooncake-transfer-engine/src/libtransfer_engine.a(memory_location.cpp.o): in function `mooncake::getMemoryLocation(void*, unsigned long)':
/root/Mooncake/mooncake-transfer-engine/src/memory_location.cpp:42: undefined reference to `cudaPointerGetAttributes'
/usr/bin/ld: /root/Mooncake/mooncake-transfer-engine/src/memory_location.cpp:45: undefined reference to `cudaGetErrorString'
collect2: error: ld returned 1 exit status

Error: Failed to build the example.
make[2]: *** [mooncake-p2p-store/CMakeFiles/build_p2p_store.dir/build.make:73: build_p2p_store] Error 1
make[1]: *** [CMakeFiles/Makefile2:1380: mooncake-p2p-store/CMakeFiles/build_p2p_store.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
^@[ 70%] Linking CXX static library libmooncake_store.a
[ 70%] Built target mooncake_store
make: *** [Makefile:146: all] Error 2

Seems like the linker doesn't link the cuda runtime.
The build guide did mention that we need to export LIBRARY_PATH and LD_LIBRARY_PATH.

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

However, since the p2p store uses the shell script to be built, the above commands don't automatically apply to its building.
I found the fix by adding one additional line to mooncake-p2p-store/build.sh

EXT_LDFLAGS+=" -L/usr/local/cuda/lib64 -lcudart"

I'm happy to do a pull request to solve this typo, so other people won't encounter this problem again.

Originally created by @realShengYao on GitHub (Jun 18, 2025). Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/518 Originally assigned to: @alogfans on GitHub. When I try to build the binary following the build guide in the docs. ```shell cmake .. -DUSE_CUDA=ON -DWITH_STORE=ON -DWITH_P2P_STORE=ON -DUSE_ETCD=ON make -j ``` Then I got this problem: ```shell $ make -j [ 1%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/endpoint_store.cpp.o [ 2%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/AllocationClass.cpp.o [ 3%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/rdma_context.cpp.o [ 4%] Building CXX object mooncake-transfer-engine/src/transport/tcp_transport/CMakeFiles/tcp_transport.dir/tcp_transport.cpp.o [ 7%] Building CXX object mooncake-transfer-engine/src/common/base/CMakeFiles/base.dir/status.cpp.o [ 7%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/rdma_endpoint.cpp.o [ 8%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/MemoryPool.cpp.o [ 9%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/MemoryAllocator.cpp.o [ 10%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/MemoryPoolManager.cpp.o [ 14%] Building Go shared library [ 14%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/rdma_transport.cpp.o [ 15%] Building CXX object mooncake-transfer-engine/src/transport/rdma_transport/CMakeFiles/rdma_transport.dir/worker_pool.cpp.o [ 15%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/Slab.cpp.o [ 16%] Building CXX object mooncake-store/src/cachelib_memory_allocator/CMakeFiles/cachelib_memory_allocator.dir/SlabAllocator.cpp.o [ 17%] Linking CXX static library libbase.a [ 17%] Built target base ^@[ 17%] Built target rdma_transport [ 18%] Linking CXX static library libcachelib_memory_allocator.a [ 18%] Built target cachelib_memory_allocator [ 18%] Built target build_etcd_wrapper [ 18%] Built target tcp_transport [ 20%] Building CXX object mooncake-transfer-engine/src/transport/CMakeFiles/transport.dir/transport.cpp.o [ 20%] Built target transport [ 21%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/config.cpp.o [ 22%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/memory_location.cpp.o [ 23%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/multi_transport.cpp.o [ 24%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/topology.cpp.o [ 25%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_engine.cpp.o [ 27%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_engine_c.cpp.o [ 28%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_metadata.cpp.o [ 29%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_metadata_dump.cpp.o [ 30%] Building CXX object mooncake-transfer-engine/src/CMakeFiles/transfer_engine.dir/transfer_metadata_plugin.cpp.o /root/Mooncake/mooncake-transfer-engine/src/multi_transport.cpp: In member function 'mooncake::Status mooncake::MultiTransport::getTransferStatus(mooncake::MultiTransport::BatchID, size_t, mooncake::MultiTransport::TransferStatus&)': /root/Mooncake/mooncake-transfer-engine/src/multi_transport.cpp:137:42: warning: comparison of integer expressions of different signedness: 'long int' and 'long unsigned int' [-Wsign-compare] 137 | if (ts > 0 && current_ts > ts && | ~~~~~~~~~~~^~~~ /root/Mooncake/mooncake-transfer-engine/src/multi_transport.cpp:138:37: warning: comparison of integer expressions of different signedness: 'long unsigned int' and 'const int64_t' {aka 'const long int'} [-Wsign-compare] 138 | current_ts - ts > kPacketDeliveryTimeout) { | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ [ 31%] Linking CXX static library libtransfer_engine.a [ 31%] Built target transfer_engine [ 32%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/transport_uint_test.dir/transport_uint_test.cpp.o [ 34%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/rdma_transport_test2.dir/rdma_transport_test2.cpp.o [ 35%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/rdma_loopback_test.dir/rdma_loopback_test.cpp.o [ 37%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/topology_test.dir/topology_test.cpp.o [ 37%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/rdma_transport_test.dir/rdma_transport_test.cpp.o [ 38%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/transfer_metadata_test.dir/transfer_metadata_test.cpp.o [ 40%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/tcp_transport_test.dir/tcp_transport_test.cpp.o [ 42%] Building CXX object mooncake-transfer-engine/example/CMakeFiles/memory_pool.dir/memory_pool.cpp.o [ 42%] Building CXX object mooncake-transfer-engine/tests/CMakeFiles/memory_location_test.dir/memory_location_test.cpp.o [ 43%] Building CXX object mooncake-transfer-engine/example/CMakeFiles/transfer_engine_bench.dir/transfer_engine_bench.cpp.o [ 45%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/allocator.cpp.o [ 47%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/master_service.cpp.o [ 47%] Building CXX object mooncake-integration/CMakeFiles/engine.dir/transfer_engine/transfer_engine_py.cpp.o [ 49%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/client.cpp.o [ 49%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/types.cpp.o [ 50%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/master_metric_manager.cpp.o [ 54%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/master_client.cpp.o [ 54%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/ha_helper.cpp.o [ 54%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/utils.cpp.o [ 56%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/transfer_task.cpp.o [ 56%] Building CXX object mooncake-store/src/CMakeFiles/mooncake_store.dir/etcd_helper.cpp.o /root/Mooncake/mooncake-transfer-engine/tests/tcp_transport_test.cpp:37:13: warning: 'void checkCudaError(cudaError_t, const char*)' defined but not used [-Wunused-function] 37 | static void checkCudaError(cudaError_t result, const char *message) { | ^~~~~~~~~~~~~~ /root/Mooncake/mooncake-store/src/master_service.cpp: In member function 'mooncake::ErrorCode mooncake::MasterService::GetAllKeys(std::vector<std::__cxx11::basic_string<char> >&)': /root/Mooncake/mooncake-store/src/master_service.cpp:175:22: warning: comparison of integer expressions of different signedness: 'int' and 'const size_t' {aka 'const long unsigned int'} [-Wsign-compare] 175 | for(int i = 0; i < kNumShards; i++) { | ~~^~~~~~~~~~~~ [ 57%] Linking CXX executable memory_location_test [ 57%] Built target memory_location_test [ 58%] Linking CXX executable transfer_metadata_test [ 60%] Linking CXX executable topology_test [ 61%] Linking CXX executable transport_uint_test [ 61%] Built target transfer_metadata_test [ 61%] Built target topology_test [ 62%] Linking CXX executable memory_pool [ 62%] Built target transport_uint_test [ 62%] Built target memory_pool [ 63%] Linking CXX executable rdma_transport_test [ 64%] Linking CXX executable rdma_loopback_test [ 64%] Built target rdma_transport_test [ 64%] Built target rdma_loopback_test [ 65%] Linking CXX executable transfer_engine_bench [ 67%] Linking CXX executable tcp_transport_test [ 67%] Built target transfer_engine_bench [ 68%] Linking CXX executable rdma_transport_test2 [ 68%] Built target tcp_transport_test [ 68%] Built target rdma_transport_test2 [ 69%] Linking CXX shared module engine.cpython-313-x86_64-linux-gnu.so [ 69%] Built target engine # command-line-arguments /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.1.linux-amd64/pkg/tool/linux_amd64/link: running gcc failed: exit status 1 /usr/bin/gcc -m64 -Wl,--build-id=0x350eb13b24935f2352e40fc8e2f2a8a31427720f -o $WORK/b001/exe/a.out -Wl,--export-dynamic-symbol=_cgo_panic -Wl,--export-dynamic-symbol=_cgo_topofstack -Wl,--export-dynamic-symbol=crosscall2 -Wl,--compress-debug-sections=zlib /tmp/go-link-1309697344/go.o /tmp/go-link-1309697344/000000.o /tmp/go-link-1309697344/000001.o /tmp/go-link-1309697344/000002.o /tmp/go-link-1309697344/000003.o /tmp/go-link-1309697344/000004.o /tmp/go-link-1309697344/000005.o /tmp/go-link-1309697344/000006.o /tmp/go-link-1309697344/000007.o /tmp/go-link-1309697344/000008.o /tmp/go-link-1309697344/000009.o /tmp/go-link-1309697344/000010.o /tmp/go-link-1309697344/000011.o /tmp/go-link-1309697344/000012.o /tmp/go-link-1309697344/000013.o /tmp/go-link-1309697344/000014.o /tmp/go-link-1309697344/000015.o /tmp/go-link-1309697344/000016.o /tmp/go-link-1309697344/000017.o /tmp/go-link-1309697344/000018.o /tmp/go-link-1309697344/000019.o /tmp/go-link-1309697344/000020.o /tmp/go-link-1309697344/000021.o -L/usr/local/cuda/lib64 -lcuda -L/usr/local/cuda/lib64 -lcuda -lresolv -L/usr/local/cuda/lib64 -lcuda -lpthread -no-pie -L/root/Mooncake/build/mooncake-transfer-engine/src -L/root/Mooncake/build/mooncake-transfer-engine/src/common/base -ltransfer_engine -lbase -lstdc++ -lnuma -lglog -libverbs -ljsoncpp -L/root/Mooncake/build/mooncake-common/etcd -letcd_wrapper -lcurl /usr/bin/ld: /root/Mooncake/build/mooncake-transfer-engine/src/libtransfer_engine.a(topology.cpp.o): in function `mooncake::Topology::discover(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)': /root/Mooncake/mooncake-transfer-engine/src/topology.cpp:167: undefined reference to `cudaGetDeviceCount' /usr/bin/ld: /root/Mooncake/build/mooncake-transfer-engine/src/libtransfer_engine.a(topology.cpp.o): in function `discoverCudaTopology': /root/Mooncake/mooncake-transfer-engine/src/topology.cpp:172: undefined reference to `cudaDeviceGetPCIBusId' /usr/bin/ld: /root/Mooncake/build/mooncake-transfer-engine/src/libtransfer_engine.a(memory_location.cpp.o): in function `mooncake::getMemoryLocation(void*, unsigned long)': /root/Mooncake/mooncake-transfer-engine/src/memory_location.cpp:42: undefined reference to `cudaPointerGetAttributes' /usr/bin/ld: /root/Mooncake/mooncake-transfer-engine/src/memory_location.cpp:45: undefined reference to `cudaGetErrorString' collect2: error: ld returned 1 exit status Error: Failed to build the example. make[2]: *** [mooncake-p2p-store/CMakeFiles/build_p2p_store.dir/build.make:73: build_p2p_store] Error 1 make[1]: *** [CMakeFiles/Makefile2:1380: mooncake-p2p-store/CMakeFiles/build_p2p_store.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... ^@[ 70%] Linking CXX static library libmooncake_store.a [ 70%] Built target mooncake_store make: *** [Makefile:146: all] Error 2 ``` Seems like the linker doesn't link the cuda runtime. The build guide did mention that we need to export LIBRARY_PATH and LD_LIBRARY_PATH. ```shell export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64 ``` However, since the p2p store uses the shell script to be built, the above commands don't automatically apply to its building. I found the fix by adding one additional line to `mooncake-p2p-store/build.sh` ```shell EXT_LDFLAGS+=" -L/usr/local/cuda/lib64 -lcudart" ``` I'm happy to do a pull request to solve this typo, so other people won't encounter this problem again.
Author
Owner

@alogfans commented on GitHub (Jun 26, 2025):

We have developed a new pull request to resolve your problem.

<!-- gh-comment-id:3007194147 --> @alogfans commented on GitHub (Jun 26, 2025): We have developed a new pull request to resolve your problem.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/Mooncake#178
No description provided.