What command line invocation are you using? What C compiler?
Nim should be able to run anywhere C can run, since it uses C as a backend language.
PATH=/home/dpon/ICBLINK/openwrt-18.06.4/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_musl/bin:/home/dpon/Android/Sdk/platform-tools/:/home/dpon/Android/Sdk/build-tools/29.0.2/:/home/dpon/Android/Sdk/cmake/3.10.2.4988404/bin:/home/dpon/.nimble/bin:/home/dpon/Java/jdk1.8.0_162/bin:/home/dpon/Java/eclipse:/home/dpon/Java/maven/bin:/home/dpon/Android/Sdk/platform-tools/:/home/dpon/Android/Sdk/build-tools/29.0.2/:/home/dpon/Android/Sdk/cmake/3.10.2.4988404/bin:/home/dpon/.nimble/bin:/home/dpon/Java/jdk1.8.0_162/bin:/home/dpon/Java/eclipse:/home/dpon/Java/maven/bin:/usr/local/bin:/usr/bin:/bin:/usr/games STAGING_DIR=/home/dpon/ICBLINK/openwrt-18.06.4/staging_dir nim c -o:hello_nim src/hello.nim
Hint: used config file '/home/dpon/.choosenim/toolchains/nim-0.20.2/config/nim.cfg' [Conf]
Hint: used config file '/home/dpon/nims/mips/src/nim.cfg' [Conf]
Hint: system [Processing]
Hint: widestrs [Processing]
Hint: io [Processing]
Hint: hello [Processing]
Hint: [Link]
mipsel-openwrt-linux-ld: warning: cannot find entry symbol __start; defaulting to 00000000004005d0
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c.o: In function `addInt_mftMOxbyu0h4yByfs3sqjA':
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:4878: undefined reference to `__divdi3'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c.o: In function `mulInt':
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5432: undefined reference to `__floatsidf'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5432: undefined reference to `__floatsidf'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5432: undefined reference to `__muldf3'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5433: undefined reference to `__floatsidf'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5435: undefined reference to `__nedf2'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5440: undefined reference to `__subdf3'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5440: undefined reference to `__ltdf2'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5440: undefined reference to `__subdf3'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5440: undefined reference to `__muldf3'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5440: undefined reference to `__subdf3'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5440: undefined reference to `__muldf3'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5440: undefined reference to `__ltdf2'
/home/dpon/nims/mips/nimcache/stdlib_system.nim.c:5440: undefined reference to `__ledf2'
Error: execution of an external program failed: 'mipsel-openwrt-linux-ld -o /home/dpon/nims/mips/hello_nim /home/dpon/nims/mips/nimcache/stdlib_io.nim.c.o /home/dpon/nims/mips/nimcache/stdlib_system.nim.c.o /home/dpon/nims/mips/nimcache/hello.nim.c.o -lc -lm -ldl'
FYI: Nim is building and passing its tests on mipsel and mips64el:
compiles with
--os:linux
--cpu:mipsel
--cc:gcc
--gcc.exe:"mipsel-openwrt-linux-musl-gcc"
--gcc.linkerexe:"mipsel-openwrt-linux-musl-ld"
--passC="-O0 -g3"
--passL="-lc -lgcc -L/home/dpon/ICBLINK/openwrt-18.06.4/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_musl/initial/lib/gcc/mipsel-openwrt-linux-musl/7.3.0"
--listCmd
--nimcache:nimcache
I found a hack lets to run HelloWorld:
XPATH = PATH=$(TOOLCHAIN)/bin:$(HOME)/.nimble/bin STAGING_DIR=$(STAGING)
hello_nim: src/hello.nim src/nim.cfg Makefile
$(XPATH) nim c -o:$@ $<
@file $@ ; ls -la $@
@$(XPATH) $(SZ) -x $@
@$(XPATH) $(OD) -x $@ | grep -i GLIBC
--gcc.exe:"mipsel-openwrt-linux-musl-gcc"
--gcc.linkerexe:"mipsel-openwrt-linux-musl-gcc"
# --passC=...disabled
# --passL=..disabled
https://github.com/ponyatov/nims/tree/239fee6f82fd0f3b542800e75e405771b8b534e9/mipsI did it: https://github.com/ponyatov/nims/blob/260926-884b/mips/src/nim.cfg
The magic with C++ compiling was the use of gcc as a linker:
--os:linux
--cpu:mipsel
--cc:gcc
gcc.exe:"mipsel-openwrt-linux-musl-gcc"
gcc.linkerexe:"mipsel-openwrt-linux-musl-gcc"
gcc.cpp.exe:"mipsel-openwrt-linux-musl-g++"
gcc.cpp.linkerexe:"mipsel-openwrt-linux-musl-gcc"
--listCmd
passL:"-L/home/dpon/ICBLINK/openwrt-18.06.4/staging_dir/target-mipsel_24kc_musl/usr/lib"
passL:"-L/home/dpon/ICBLINK/openwrt-18.06.4/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_musl/lib/gcc/mipsel-openwrt-linux-musl/7.3.0"
passL:"-luClibc++"
--debugger:native
PS: and don't forget to enable CONFIG_PACKAGE_uclibcxx=y in OpenWrt .config