Hi,
I am trying to build a new nerves / scenic project but I cannot get scenic_driver_local
to compile.
It appears to be some sort of architecture mis-match and I can’t pin down a solution.
Terminal is not running rosetta:
johnny@omega:$ arch
arm64
Elixir / Erlang versions:
elixir 1.17.1-otp-27
erlang 27.0
scenic_driver_local
version: 0.11.0
(from mix.lock)
Here’s the full debug output:
johnny@omega:$ mix deps.compile scenic_driver_local
==> scenic_driver_local
Compiling 8 files (.ex)
warning: single-quoted strings represent charlists. Use ~c"" if you indeed want a charlist or use "" instead
│
70 │ @port '/scenic_driver_local'
│ ~
│
└─ lib/driver.ex:70:9
warning: use Bitwise is deprecated. import Bitwise instead
│
9 │ use Bitwise
│ ~~~~~~~~~~~
│
└─ lib/to_port.ex:9: Scenic.Driver.Local.ToPort (module)
warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead
│
145 │ Logger.warn("scenic_driver_local: #{inspect(msg)}")
│ ~
│
└─ lib/from_port.ex:145:12: Scenic.Driver.Local.FromPort.handle_port_message/2
Generated scenic_driver_local app
SCENIC_LOCAL_TARGET: glfw
mkdir -p /Users/johnny/src/nerves/omega/_build/dev/lib/scenic_driver_local/priv
cc -O3 -std=c99 `pkg-config --static --cflags glfw3 glew` -fPIC -o /Users/johnny/src/nerves/omega/_build/dev/lib/scenic_driver_local/priv/scenic_driver_local c_src/device/glfw.c c_src/main.c c_src/nanovg/nanovg.c c_src/comms.c c_src/unix_comms.c c_src/utils.c c_src/script.c c_src/image.c c_src/font.c c_src/tommyds/src/tommyhashlin.c c_src/tommyds/src/tommyhash.c `pkg-config --static --libs glfw3 glew` -framework Cocoa -framework OpenGL -Wno-deprecated
c_src/utils.c:18:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
18 | while( p_err_str = device_gl_error() ) {
| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
c_src/utils.c:18:20: note: place parentheses around the assignment to silence this warning
18 | while( p_err_str = device_gl_error() ) {
| ^
| ( )
c_src/utils.c:18:20: note: use '==' to turn this assignment into an equality comparison
18 | while( p_err_str = device_gl_error() ) {
| ^
| ==
1 warning generated.
c_src/script.c:178:14: warning: expression result unused [-Wunused-value]
178 | default: size;
| ^~~~
c_src/script.c:180:1: warning: non-void function does not return a value in all control paths [-Wreturn-type]
180 | }
| ^
2 warnings generated.
ld: warning: ignoring file '/opt/homebrew/Cellar/glew/2.2.0_1/lib/libGLEW.2.2.0.dylib': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/opt/homebrew/Cellar/glfw/3.4/lib/libglfw.3.4.dylib': found architecture 'arm64', required architecture 'x86_64'
Undefined symbols for architecture x86_64:
"___glewActiveTexture", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewAttachShader", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewBindAttribLocation", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewBindBuffer", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewBlendFuncSeparate", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewBufferData", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewCompileShader", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewCreateProgram", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewCreateShader", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewDeleteBuffers", referenced from:
_glnvg__renderDelete in glfw-dbdf0f.o
"___glewDeleteProgram", referenced from:
_glnvg__renderDelete in glfw-dbdf0f.o
"___glewDeleteShader", referenced from:
_glnvg__renderDelete in glfw-dbdf0f.o
_glnvg__renderDelete in glfw-dbdf0f.o
"___glewDisableVertexAttribArray", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewEnableVertexAttribArray", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewGenBuffers", referenced from:
_glnvg__renderCreate in glfw-dbdf0f.o
"___glewGetProgramInfoLog", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewGetProgramiv", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewGetShaderInfoLog", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
_glnvg__createShader in glfw-dbdf0f.o
"___glewGetShaderiv", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewGetUniformLocation", referenced from:
_glnvg__renderCreate in glfw-dbdf0f.o
"___glewLinkProgram", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewShaderSource", referenced from:
_glnvg__createShader in glfw-dbdf0f.o
"___glewStencilOpSeparate", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewUniform1i", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewUniform2fv", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewUniform4fv", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
_glnvg__setUniforms in glfw-dbdf0f.o
"___glewUseProgram", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
_glnvg__renderFlush in glfw-dbdf0f.o
"___glewVertexAttribPointer", referenced from:
_glnvg__renderFlush in glfw-dbdf0f.o
"_glewInit", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwCreateWindow", referenced from:
_device_init in glfw-dbdf0f.o
"_glfwGetCursorPos", referenced from:
_mouse_button_callback in glfw-dbdf0f.o
_scroll_callback in glfw-dbdf0f.o
_cursor_enter_callback in glfw-dbdf0f.o
"_glfwGetFramebufferSize", referenced from:
_reshape_window in glfw-dbdf0f.o
_setup_window in glfw-dbdf0f.o
"_glfwGetWindowSize", referenced from:
_setup_window in glfw-dbdf0f.o
_device_init in glfw-dbdf0f.o
"_glfwInit", referenced from:
_device_init in glfw-dbdf0f.o
"_glfwMakeContextCurrent", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwPollEvents", referenced from:
_device_init in glfw-dbdf0f.o
_device_poll in glfw-dbdf0f.o
"_glfwSetCharModsCallback", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwSetCursorEnterCallback", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwSetCursorPosCallback", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwSetErrorCallback", referenced from:
_device_init in glfw-dbdf0f.o
"_glfwSetFramebufferSizeCallback", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwSetKeyCallback", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwSetMouseButtonCallback", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwSetScrollCallback", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwSetWindowCloseCallback", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwSetWindowShouldClose", referenced from:
_window_close_callback in glfw-dbdf0f.o
"_glfwSetWindowSize", referenced from:
_device_init in glfw-dbdf0f.o
_device_init in glfw-dbdf0f.o
"_glfwSetWindowSizeCallback", referenced from:
_setup_window in glfw-dbdf0f.o
"_glfwSwapBuffers", referenced from:
_device_end_render in glfw-dbdf0f.o
"_glfwTerminate", referenced from:
_device_init in glfw-dbdf0f.o
"_glfwWindowHint", referenced from:
_set_window_hints in glfw-dbdf0f.o
_set_window_hints in glfw-dbdf0f.o
_set_window_hints in glfw-dbdf0f.o
_set_window_hints in glfw-dbdf0f.o
_device_init in glfw-dbdf0f.o
_device_init in glfw-dbdf0f.o
_device_init in glfw-dbdf0f.o
_device_init in glfw-dbdf0f.o
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/Users/johnny/src/nerves/omega/_build/dev/lib/scenic_driver_local/priv/scenic_driver_local] Error 1
could not compile dependency :scenic_driver_local, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile scenic_driver_local --force", update it with "mix deps.update scenic_driver_local" or clean it with "mix deps.clean scenic_driver_local"
==> omega
** (Mix) Could not compile with "make" (exit status: 2).
You need to have gcc and make installed. Try running the
commands "gcc --version" and / or "make --version". If these programs
are not installed, you will be prompted to install them.
Yes, make and gcc are installed:
johnny@omega:$ gcc --version
Apple clang version 16.0.0 (clang-1600.0.26.4)
Target: arm64-apple-darwin24.1.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
johnny@omega:$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i386-apple-darwin11.3.0
Homebrew is not running under Rosetta 2
:
johnny@omega:$ brew config
HOMEBREW_VERSION: 4.4.4
ORIGIN: https://github.com/Homebrew/brew
HEAD: 824efa8836dc226aa92dbbf7404c1b4a66707cca
Last commit: 6 days ago
Core tap JSON: 10 Nov 16:58 UTC
Core cask tap JSON: 10 Nov 16:58 UTC
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_MAKE_JOBS: 10
Homebrew Ruby: 3.3.5 => /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.3.5/bin/ruby
CPU: 10-core 64-bit dunno
Clang: 16.0.0 build 1600
Git: 2.39.5 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
Curl: 8.7.1 => /usr/bin/curl
macOS: 15.1-arm64
CLT: 15.0.1.0.2.5
Xcode: 16.1
Rosetta 2: false
I uninstalled all of the dependencies and re-installed but I keep hitting this road block.
Any help is greatly appreciated, thank you