sqlite-vec icon indicating copy to clipboard operation
sqlite-vec copied to clipboard

macOS build fails

Open brianmacy opened this issue 4 months ago • 1 comments

If I add the sqlite3 library to the link it works though loading segfaults. The link issue is the same with the system sqlite3 (3.43) or homebrew (3.50) but homebrew is required to load as the system sqlite3 isn't compiled with it on.

% cc --version Apple clang version 17.0.0 (clang-1700.0.13.5) Target: arm64-apple-darwin24.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

% make -f Makefile.orig clean loadable rm -rf dist mkdir -p dist cc
-fPIC -shared
-Wall -Wextra
-Ivendor/
-O3
-mcpu=apple-m1 -DSQLITE_VEC_ENABLE_NEON
sqlite-vec.c -o dist/vec0.dylib Undefined symbols for architecture arm64: "_sqlite3_bind_int", referenced from: _vec0_init in sqlite-vec-1a2d54.o _vec0_init in sqlite-vec-1a2d54.o _vec0_init in sqlite-vec-1a2d54.o "_sqlite3_bind_int64", referenced from: _vec0_get_chunk_position in sqlite-vec-1a2d54.o _vec0_get_partition_value_for_rowid in sqlite-vec-1a2d54.o _vec0_get_auxiliary_value_for_rowid in sqlite-vec-1a2d54.o _vec0_result_metadata_value_for_rowid in sqlite-vec-1a2d54.o _vec0_rowids_insert_rowid in sqlite-vec-1a2d54.o _vec0_rowids_update_position in sqlite-vec-1a2d54.o _vec0_rowids_update_position in sqlite-vec-1a2d54.o _vec0_rowids_update_position in sqlite-vec-1a2d54.o ... "_sqlite3_bind_text", referenced from: _vec0_write_metadata_value in sqlite-vec-1a2d54.o _vec0_init in sqlite-vec-1a2d54.o _vec0_init in sqlite-vec-1a2d54.o _vec0_init in sqlite-vec-1a2d54.o _vec0_init in sqlite-vec-1a2d54.o _vec0_init in sqlite-vec-1a2d54.o "_sqlite3_bind_value", referenced from: _vec0_rowid_from_id in sqlite-vec-1a2d54.o _vec0_get_latest_chunk_rowid in sqlite-vec-1a2d54.o _vec0_rowids_insert_id in sqlite-vec-1a2d54.o _vec0_new_chunk in sqlite-vec-1a2d54.o _vec0_chunks_iter in sqlite-vec-1a2d54.o _vec0Update_Insert in sqlite-vec-1a2d54.o _vec0Update_UpdateAuxColumn in sqlite-vec-1a2d54.o

...

"_sqlite3_vmprintf", referenced from: _vtab_set_error in sqlite-vec-1a2d54.o "_sqlite3_vtab_in", referenced from: _vec0BestIndex in sqlite-vec-1a2d54.o _vec0BestIndex in sqlite-vec-1a2d54.o _vec0BestIndex in sqlite-vec-1a2d54.o _vec0BestIndex in sqlite-vec-1a2d54.o "_sqlite3_vtab_in_first", referenced from: _vec0Filter_knn in sqlite-vec-1a2d54.o _vec0Filter_knn in sqlite-vec-1a2d54.o _vec0Filter_knn in sqlite-vec-1a2d54.o "_sqlite3_vtab_in_next", referenced from: _vec0Filter_knn in sqlite-vec-1a2d54.o _vec0Filter_knn in sqlite-vec-1a2d54.o _vec0Filter_knn in sqlite-vec-1a2d54.o "_sqlite3_vtab_nochange", referenced from: _vec0Column in sqlite-vec-1a2d54.o _vec0Column in sqlite-vec-1a2d54.o _vec0Column in sqlite-vec-1a2d54.o _vec0Column in sqlite-vec-1a2d54.o _vec0Column in sqlite-vec-1a2d54.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [dist/vec0.dylib] Error 1

brianmacy avatar Aug 27 '25 10:08 brianmacy

Did you try the workflow commands? https://github.com/asg017/sqlite-vec/blob/main/.github/workflows/release.yaml#L28

There is no Makefile.orig here.

$ ./scripts/vendor.sh
...
$ make clean loadable static
cc -fPIC -shared -Wall -Wextra -Ivendor/ -O3 -mcpu=apple-m1 -DSQLITE_VEC_ENABLE_NEON sqlite-vec.c -o dist/vec0.dylib
cc -Ivendor/ -mcpu=apple-m1 -DSQLITE_VEC_ENABLE_NEON -DSQLITE_CORE -DSQLITE_VEC_STATIC -O3 -c  sqlite-vec.c -o dist/.objs/vec.o
ar rcs dist/libsqlite_vec0.a dist/.objs/vec.o

This also builds after updating to sqlite-amalgamation-3500400.zip.

reneleonhardt avatar Sep 19 '25 11:09 reneleonhardt