Skip to content

Instantly share code, notes, and snippets.

@bobzhang
Created February 26, 2026 14:32
Show Gist options
  • Select an option

  • Save bobzhang/82a0a6902f3be02488afd42d96d53d8e to your computer and use it in GitHub Desktop.

Select an option

Save bobzhang/82a0a6902f3be02488afd42d96d53d8e to your computer and use it in GitHub Desktop.
moon build links non-main package as executable and fails with missing _main
Date: 2026-02-26T14:32:29Z
moon 0.1.20260224 (2288f02 2026-02-24)
Feature flags enabled: rr_moon_pkg
Darwin HongboZhangs-Mac-mini.local 25.0.0 Darwin Kernel Version 25.0.0: Wed Sep 17 21:42:08 PDT 2025; root:xnu-12377.1.9~141/RELEASE_ARM64_T8132 arm64
/Library/Developer/CommandLineTools
Apple clang version 17.0.0 (clang-1700.3.19.1)
Target: arm64-apple-darwin25.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
moonc build-package ./internal/raylib/audio.mbt ./internal/raylib/automation.mbt ./internal/raylib/core.mbt ./internal/raylib/filesystem.mbt ./internal/raylib/image_drawing.mbt ./internal/raylib/image_processing.mbt ./internal/raylib/models.mbt ./internal/raylib/shapes.mbt ./internal/raylib/text.mbt ./internal/raylib/textures.mbt ./internal/raylib/types.mbt ./internal/raylib/utils.mbt -o ./_build/native/debug/build/internal/raylib/raylib.core -pkg tonyfettes/raylib/internal/raylib -std-path '$MOON_HOME/lib/core/_build/native/release/bundle' -i '$MOON_HOME/lib/core/_build/native/release/bundle/prelude/prelude.mi:prelude' -pkg-sources tonyfettes/raylib/internal/raylib:./internal/raylib -target native -g -O0 -workspace-path . -all-pkgs ./_build/native/debug/build/all_pkgs.json
moonc build-package ./audio.mbt ./automation.mbt ./camera.mbt ./color.mbt ./drawing.mbt ./filesystem.mbt ./image_drawing.mbt ./image_processing.mbt ./input.mbt ./math_helpers.mbt ./matrix.mbt ./models.mbt ./npatchinfo.mbt ./quaternion_math.mbt ./ray.mbt ./rectangle.mbt ./shapes.mbt ./text.mbt ./textures.mbt ./utils.mbt ./vector.mbt ./vector2_math.mbt ./vector3_math.mbt ./window.mbt -o ./_build/native/debug/build/raylib.core -pkg tonyfettes/raylib -std-path '$MOON_HOME/lib/core/_build/native/release/bundle' -i '$MOON_HOME/lib/core/_build/native/release/bundle/buffer/buffer.mi:buffer' -i ./_build/native/debug/build/internal/raylib/raylib.mi:ffi -i '$MOON_HOME/lib/core/_build/native/release/bundle/math/math.mi:math' -i '$MOON_HOME/lib/core/_build/native/release/bundle/prelude/prelude.mi:prelude' -i '$MOON_HOME/lib/core/_build/native/release/bundle/encoding/utf8/utf8.mi:utf8' -pkg-sources tonyfettes/raylib:. -target native -g -O0 -workspace-path . -all-pkgs ./_build/native/debug/build/all_pkgs.json
/usr/bin/cc -o ./_build/native/debug/build/runtime.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value '$MOON_HOME/lib/runtime.c' -DMOONBIT_ALLOW_STACKTRACE
moonc link-core '$MOON_HOME/lib/core/_build/native/release/bundle/abort/abort.core' '$MOON_HOME/lib/core/_build/native/release/bundle/core.core' ./_build/native/debug/build/internal/raylib/raylib.core -main tonyfettes/raylib/internal/raylib -o ./_build/native/debug/build/internal/raylib/raylib.c -pkg-config-path ./internal/raylib/moon.pkg -pkg-sources tonyfettes/raylib/internal/raylib:./internal/raylib -pkg-sources 'moonbitlang/core:$MOON_HOME/lib/core' -target native -g -O0
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/utils.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/utils.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_window.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_window.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_utils.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_utils.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_textures.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_textures.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_text.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_text.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_shapes.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_shapes.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_models.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_models.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_input.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_input.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_image_processing.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_image_processing.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_image_drawing.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_image_drawing.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_filesystem.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_filesystem.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_drawing.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_drawing.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_color.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_color.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_camera.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_camera.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_automation.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_automation.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/stub_audio.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/stub_audio.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/rtextures.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/rtextures.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/rtext.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/rtext.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/rshapes.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/rshapes.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/rmodels.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/rmodels.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/rglfw.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/rglfw.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/rcore.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/rcore.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/raudio.o '-I$MOON_HOME/include' -g -c -fwrapv -fno-strict-aliasing -Wno-unused-value ./internal/raylib/raudio.c -DPLATFORM_DESKTOP_GLFW -ObjC
/usr/bin/ar -r -c -s ./_build/native/debug/build/internal/raylib/libraylib.a ./_build/native/debug/build/internal/raylib/rglfw.o ./_build/native/debug/build/internal/raylib/utils.o ./_build/native/debug/build/internal/raylib/rcore.o ./_build/native/debug/build/internal/raylib/rshapes.o ./_build/native/debug/build/internal/raylib/rtextures.o ./_build/native/debug/build/internal/raylib/rtext.o ./_build/native/debug/build/internal/raylib/rmodels.o ./_build/native/debug/build/internal/raylib/raudio.o ./_build/native/debug/build/internal/raylib/stub_window.o ./_build/native/debug/build/internal/raylib/stub_input.o ./_build/native/debug/build/internal/raylib/stub_drawing.o ./_build/native/debug/build/internal/raylib/stub_camera.o ./_build/native/debug/build/internal/raylib/stub_color.o ./_build/native/debug/build/internal/raylib/stub_shapes.o ./_build/native/debug/build/internal/raylib/stub_textures.o ./_build/native/debug/build/internal/raylib/stub_text.o ./_build/native/debug/build/internal/raylib/stub_models.o ./_build/native/debug/build/internal/raylib/stub_audio.o ./_build/native/debug/build/internal/raylib/stub_image_processing.o ./_build/native/debug/build/internal/raylib/stub_image_drawing.o ./_build/native/debug/build/internal/raylib/stub_filesystem.o ./_build/native/debug/build/internal/raylib/stub_utils.o ./_build/native/debug/build/internal/raylib/stub_automation.o
/usr/bin/cc -o ./_build/native/debug/build/internal/raylib/raylib.exe '-I$MOON_HOME/include' -g -fwrapv -fno-strict-aliasing -Wno-unused-value '$MOON_HOME/lib/libmoonbitrun.o' ./_build/native/debug/build/internal/raylib/raylib.c ./_build/native/debug/build/runtime.o ./_build/native/debug/build/internal/raylib/libraylib.a -lm -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo -framework AudioToolbox -framework CoreFoundation '$MOON_HOME/lib/libbacktrace.a'
moonc build-package ./raygui/color.mbt ./raygui/controls_basic.mbt ./raygui/controls_color.mbt ./raygui/controls_container.mbt ./raygui/controls_dialog.mbt ./raygui/controls_list.mbt ./raygui/controls_slider.mbt ./raygui/controls_text.mbt ./raygui/draw.mbt ./raygui/icons.mbt ./raygui/lib.mbt ./raygui/state.mbt ./raygui/style.mbt ./raygui/text.mbt -o ./_build/native/debug/build/raygui/raygui.core -pkg tonyfettes/raylib/raygui -std-path '$MOON_HOME/lib/core/_build/native/release/bundle' -i '$MOON_HOME/lib/core/_build/native/release/bundle/prelude/prelude.mi:prelude' -i ./_build/native/debug/build/raylib.mi:raylib -pkg-sources tonyfettes/raylib/raygui:./raygui -target native -g -O0 -workspace-path . -all-pkgs ./_build/native/debug/build/all_pkgs.json
failed: /usr/bin/cc -o /Users/hongbozhang/git/tonyfettes-raylib/_build/native/debug/build/internal/raylib/raylib.exe -I/Users/hongbozhang/.moon/include -g -fwrapv -fno-strict-aliasing -Wno-unused-value /Users/hongbozhang/.moon/lib/libmoonbitrun.o /Users/hongbozhang/git/tonyfettes-raylib/_build/native/debug/build/internal/raylib/raylib.c /Users/hongbozhang/git/tonyfettes-raylib/_build/native/debug/build/runtime.o /Users/hongbozhang/git/tonyfettes-raylib/_build/native/debug/build/internal/raylib/libraylib.a -lm -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo -framework AudioToolbox -framework CoreFoundation /Users/hongbozhang/.moon/lib/libbacktrace.a
Undefined symbols for architecture arm64:
"_main", referenced from:
<initial-undefines>
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Failed with 0 warnings, 0 errors.
error: failed when building project
WARN Duplicate alias `raylib` at "/Users/hongbozhang/git/tonyfettes-raylib/moon.pkg". "test-import" will automatically add "import" and current package as dependency so you don't need to add it manually. If you're test-importing a dependency with the same default alias as your current package, considering give it a different alias than the current package. Violating import: `tonyfettes/raylib/internal/raylib`
failed: /usr/bin/cc -o /Users/hongbozhang/git/tonyfettes-raylib/_build/native/debug/build/internal/raylib/raylib.exe -I/Users/hongbozhang/.moon/include -g -fwrapv -fno-strict-aliasing -Wno-unused-value /Users/hongbozhang/.moon/lib/libmoonbitrun.o /Users/hongbozhang/git/tonyfettes-raylib/_build/native/debug/build/internal/raylib/raylib.c /Users/hongbozhang/git/tonyfettes-raylib/_build/native/debug/build/runtime.o /Users/hongbozhang/git/tonyfettes-raylib/_build/native/debug/build/internal/raylib/libraylib.a -lm -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo -framework AudioToolbox -framework CoreFoundation /Users/hongbozhang/.moon/lib/libbacktrace.a
Undefined symbols for architecture arm64:
"_main", referenced from:
<initial-undefines>
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Failed with 0 warnings, 0 errors.
error: failed when building project
Repository: https://github.com/moonbit-community/tonyfettes-raylib
Observed on: fix/warnings (f9886ec) and origin/main (2ae71de)
Commands:
moon build --verbose
moon build --dry-run --verbose
Key observation:
moon build --dry-run --verbose shows link-core with:
-main tonyfettes/raylib/internal/raylib
and then cc links internal/raylib/raylib.exe, which fails because there is no main symbol.
Sanity check:
moon test --target native succeeds (Total tests: 81, passed: 81, failed: 0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment