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

Build failed for macOS arm64 when linking foundationdb #206

Open
Rjerk opened this issue Nov 8, 2021 · 1 comment
Open

Build failed for macOS arm64 when linking foundationdb #206

Rjerk opened this issue Nov 8, 2021 · 1 comment

Comments

@Rjerk
Copy link

Rjerk commented Nov 8, 2021

Build failed in my macOS:

➜  go-ycsb git:(master) ✗ go version
go version go1.17 darwin/arm64

➜  go-ycsb git:(master) make
go build -tags " foundationdb" -o bin/go-ycsb cmd/go-ycsb/*
# github.com/apple/foundationdb/bindings/go/src/fdb
ld: warning: ignoring file /usr/local/lib/libfdb_c.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
Undefined symbols for architecture arm64:
  "_fdb_create_database", referenced from:
      __cgo_e91152327667_Cfunc_fdb_create_database in _x005.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_create_database)
  "_fdb_database_create_transaction", referenced from:
      __cgo_e91152327667_Cfunc_fdb_database_create_transaction in _x003.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_database_create_transaction)
  "_fdb_database_destroy", referenced from:
      __cgo_e91152327667_Cfunc_fdb_database_destroy in _x003.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_database_destroy)
  "_fdb_database_set_option", referenced from:
      __cgo_e91152327667_Cfunc_fdb_database_set_option in _x003.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_database_set_option)
  "_fdb_future_cancel", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_cancel in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_cancel)
  "_fdb_future_destroy", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_destroy in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_destroy)
  "_fdb_future_get_error", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_get_error in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_get_error)
  "_fdb_future_get_int64", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_get_int64 in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_get_int64)
  "_fdb_future_get_key", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_get_key in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_get_keyvalue_array, __cgo_e91152327667_Cfunc_fdb_future_get_key )
  "_fdb_future_get_keyvalue_array", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_get_keyvalue_array in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_get_keyvalue_array)
  "_fdb_future_get_string_array", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_get_string_array in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_get_string_array)
  "_fdb_future_get_value", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_get_value in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_get_value)
  "_fdb_future_is_ready", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_is_ready in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_is_ready)
  "_fdb_future_release_memory", referenced from:
      __cgo_e91152327667_Cfunc_fdb_future_release_memory in _x006.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_future_release_memory)
  "_fdb_future_set_callback", referenced from:
      _go_set_callback in _x006.o
      __cgo_e91152327667_Cfunc_go_set_callback in _x006.o
  "_fdb_get_error", referenced from:
      __cgo_e91152327667_Cfunc_fdb_get_error in _x004.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_get_error)
  "_fdb_get_max_api_version", referenced from:
      __cgo_e91152327667_Cfunc_fdb_get_max_api_version in _x005.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_get_max_api_version)
  "_fdb_network_set_option", referenced from:
      __cgo_e91152327667_Cfunc_fdb_network_set_option in _x005.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_network_set_option)
  "_fdb_run_network", referenced from:
      __cgo_e91152327667_Cfunc_fdb_run_network in _x005.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_run_network)
  "_fdb_select_api_version_impl", referenced from:
      __cgo_e91152327667_Cfunc_fdb_select_api_version_impl in _x005.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_select_api_version_impl)
  "_fdb_setup_network", referenced from:
      __cgo_e91152327667_Cfunc_fdb_setup_network in _x005.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_setup_network)
  "_fdb_transaction_add_conflict_range", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_add_conflict_range in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_add_conflict_range)
  "_fdb_transaction_atomic_op", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_atomic_op in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_atomic_op)
  "_fdb_transaction_cancel", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_cancel in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_cancel)
  "_fdb_transaction_clear", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_clear in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_clear_range, __cgo_e91152327667_Cfunc_fdb_transaction_clear )
  "_fdb_transaction_clear_range", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_clear_range in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_clear_range)
  "_fdb_transaction_commit", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_commit in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_commit)
  "_fdb_transaction_destroy", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_destroy in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_destroy)
  "_fdb_transaction_get", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_get in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_get_versionstamp, __cgo_e91152327667_Cfunc_fdb_transaction_get_range , __cgo_e91152327667_Cfunc_fdb_transaction_get_key , __cgo_e91152327667_Cfunc_fdb_transaction_get_approximate_size , __cgo_e91152327667_Cfunc_fdb_transaction_get_addresses_for_key , __cgo_e91152327667_Cfunc_fdb_transaction_get , __cgo_e91152327667_Cfunc_fdb_transaction_get_read_version , __cgo_e91152327667_Cfunc_fdb_transaction_get_committed_version )
  "_fdb_transaction_get_addresses_for_key", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_get_addresses_for_key in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_get_addresses_for_key)
  "_fdb_transaction_get_approximate_size", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_get_approximate_size in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_get_approximate_size)
  "_fdb_transaction_get_committed_version", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_get_committed_version in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_get_committed_version)
  "_fdb_transaction_get_key", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_get_key in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_get_key)
  "_fdb_transaction_get_range", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_get_range in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_get_range)
  "_fdb_transaction_get_read_version", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_get_read_version in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_get_read_version)
  "_fdb_transaction_get_versionstamp", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_get_versionstamp in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_get_versionstamp)
  "_fdb_transaction_on_error", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_on_error in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_on_error)
  "_fdb_transaction_reset", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_reset in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_reset)
  "_fdb_transaction_set", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_set in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_set_option, __cgo_e91152327667_Cfunc_fdb_transaction_set_read_version , __cgo_e91152327667_Cfunc_fdb_transaction_set )
  "_fdb_transaction_set_option", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_set_option in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_set_option)
  "_fdb_transaction_set_read_version", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_set_read_version in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_set_read_version)
  "_fdb_transaction_watch", referenced from:
      __cgo_e91152327667_Cfunc_fdb_transaction_watch in _x008.o
     (maybe you meant: __cgo_e91152327667_Cfunc_fdb_transaction_watch)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [build] Error 2

Solved this by adding -tags dynamic to have go-ycsb link foundationdb dynamically.

diff --git a/Makefile b/Makefile
index 63c0ab0..2a80647 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@ build:
 ifeq ($(TAGS),)
        $(CGO_FLAGS) go build -o bin/go-ycsb cmd/go-ycsb/*
 else
-       $(CGO_FLAGS) go build -tags "$(TAGS)" -o bin/go-ycsb cmd/go-ycsb/*
+       $(CGO_FLAGS) go build -tags "$(TAGS)" -tags dynamic -o bin/go-ycsb cmd/go-ycsb/*
 endif
@renormalize
Copy link

Thank you so much for posting what solved the issue for you!

I was facing the following issue on darwin/arm64 while being on v1.0.1 and on master at 1906500 -

➜  go-ycsb git:(master) make                       
go build -tags " libsqlite3" -o bin/go-ycsb cmd/go-ycsb/*
# github.com/mattn/go-sqlite3
../../../../go/pkg/mod/github.com/mattn/[email protected]+incompatible/sqlite3_load_extension.go:25:8: could not determine kind of name for C.sqlite3_enable_load_extension
../../../../go/pkg/mod/github.com/mattn/[email protected]+incompatible/sqlite3_load_extension.go:33:8: could not determine kind of name for C.sqlite3_load_extension
make: *** [build] Error 1

After adding -tags dynamic, the build was successful -

➜  go-ycsb git:(master) ✗ make
go build -tags " libsqlite3" -tags dynamic -o bin/go-ycsb cmd/go-ycsb/*
➜  go-ycsb git:(master) ✗ 

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

No branches or pull requests

2 participants