Comments (4)
I've unfortunately not tried to compile DOME myself on raspberry pi and ARM architecture hosts, but a couple members of the community have managed it. It requires a few modifications to the build process for DOME as well as Wren, from what I understand.
from dome.
Hi @avivbeeri, thank you for your answer. I will look around for hints on how to proceed.
Trying another from my collection of aging machines, this time a laptop with i386-based Raspberry Pi Desktop. Same error in the link step when invoking with ARCH=32bit make -e
:
==== Linking DOME (32bit linux release shared) ====
cc -DDOME_HASH=\"a502a22\" -DDOME_VERSION=\"v1.6.1\" -std=c99 -pedantic -Wall -Wno-unused-parameter -Wno-unused-function -Wno-unused-value -Wno-clobbered -Wno-maybe-uninitialized -Wno-attributes -fvisibility=hidden -O3 -o dome obj/32bit/*.o -Llib -lSDL2 -Wl,--wrap=log,--wrap=log2,--wrap=exp,--wrap=pow,--wrap=expf,--wrap=powf,--wrap=logf -lm -lwren
/usr/bin/ld: obj/32bit/glibc_compat.o: in function `__wrap_pow':
glibc_compat.c:(.text+0x20): undefined reference to `pow@GLIBC_2.2.5'
/usr/bin/ld: obj/32bit/glibc_compat.o: in function `__wrap_exp':
glibc_compat.c:(.text+0x48): undefined reference to `exp@GLIBC_2.2.5'
/usr/bin/ld: obj/32bit/glibc_compat.o: in function `__wrap_log':
glibc_compat.c:(.text+0x78): undefined reference to `log@GLIBC_2.2.5'
/usr/bin/ld: obj/32bit/glibc_compat.o: in function `__wrap_log2':
glibc_compat.c:(.text+0xa8): undefined reference to `log2@GLIBC_2.2.5'
/usr/bin/ld: obj/32bit/glibc_compat.o: in function `__wrap_logf':
glibc_compat.c:(.text+0xdf): undefined reference to `logf@GLIBC_2.2.5'
/usr/bin/ld: obj/32bit/glibc_compat.o: in function `__wrap_powf':
glibc_compat.c:(.text+0x11f): undefined reference to `powf@GLIBC_2.2.5'
/usr/bin/ld: obj/32bit/glibc_compat.o: in function `__wrap_expf':
glibc_compat.c:(.text+0x14f): undefined reference to `expf@GLIBC_2.2.5'
collect2: error: ld returned 1 exit status
from dome.
Check out the Makefile in my fork on the develop branch. The glibc wrapper functions do not work on any arm device that I have tried. I modified the makefile to not depend on the glibc_compat.o if the architecture is aarch64. I have a theory as to why this happens but I'm not knowledgeable enough to know for sure. What I do know is you don't need the wrapper functions on an arm distro and it is working fine.
UNAME_M = $(shell uname -m)
checks what architecture the machine is running and then here is where it assigns it to the ARCH
variable:
else ifeq ($(UNAME_S), Linux)
SYSTEM ?= linux
ifeq ($(UNAME_M), aarch64)
ARCH ?= arm
else
ARCH ?= 64bit
endif
All I did after that is check what the ARCH is when the compiler adds the dependencies for a linux build and omit the glibc COMPAT_DEP. That chunk is right here
ifneq ($(filter linux,$(TAGS)),)
ifneq ($(filter arm,$(TAGS)),)
else
COMPAT_DEP = $(OBJS)/glibc_compat.o
LDFLAGS += -Wl,--wrap=log,--wrap=log2,--wrap=exp,--wrap=pow,--wrap=expf,--wrap=powf,--wrap=logf
endif
endif
LDFLAGS += $(DEPS)
from dome.
I've found a solution:
In file include/glibc_compat.c, there is this block with assembly statements:
// x86_64 glibc -
#define asm __asm__
asm (".symver pow, pow@GLIBC_2.2.5");
asm (".symver exp, exp@GLIBC_2.2.5");
asm (".symver log, log@GLIBC_2.2.5");
asm (".symver log2, log2@GLIBC_2.2.5");
asm (".symver logf, logf@GLIBC_2.2.5");
asm (".symver powf, powf@GLIBC_2.2.5");
asm (".symver expf, expf@GLIBC_2.2.5");
#undef asm
If I wrap this in #if 0 ... #endif
, dome links fine. I do not totally understand these statements, but I assume they bind the math function to a certain version of GLIBC which is not installed on my system.
from dome.
Related Issues (20)
- graphicsApi: Canvas does not resize after init HOT 1
- Add `justReleased` to get when a key has been released
- DOME doesn't handle absolute paths correctly for an entry point
- Canvas.clip crashes if the Canvas has been resized
- Plugin: DOME_Color.value seems to be ordered as 0xAABBGGRR but docs say It's 0xAARRGGBB HOT 5
- Modules with a filename the same as internal modules aren't read HOT 1
- When using offsets and clipping regions, an x less than 0 underflows to the previous row
- Scale dome.html viewport HOT 4
- ImageData rendered partially offscreen to the left would snap to x=0 HOT 1
- DOME v1.8.0's Mac build is actually for aarch64 (M1+) rather than x86_64 or a Universal Build
- When taking a screenshot using the built-in mechanism,, DOME overwrites the old one
- Windows - Dome Fails to load files from other Drives HOT 3
- Log level can't be set to "debug"
- Resizing the Canvas without clearing it sometimes causes artifacting
- DOME can't play all MP3s
- embed may failed on windows wsl2 HOT 2
- Log.* allows only strings and behaves unexpectedly if provided something else
- Silent crash with invalid string HOT 1
- Any plans to add collision detection? HOT 2
- fps reduced when adding to many item in list HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dome.