v icon indicating copy to clipboard operation
v copied to clipboard

Cannot cross compile to `freebsd`, `windows` works fine

Open dy-tea opened this issue 1 year ago • 0 comments

Describe the bug

I have a project that is written in V and only depends on standard V modules. I am on linux and cross-compilation to windows works fine but I get a linker error when trying the same with freebsd.

Reproduction Steps

Create the following file main.v

fn main() {
	println('Hello World!')
}

Linux on Linux:

# v -os linux main.v
# ./main
Hello World!

Windows on Linux:

# v -os windows main.v
Cross compiling for Windows...
/home/dylan/Repos/rr-dl/main.exe has been successfully cross compiled for windows.
# WINEDEBUG=-all wine main.exe
wine: using kernel write watches, use_kernel_writewatch 1.
wineserver: using server-side synchronization.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
wine: using kernel write watches, use_kernel_writewatch 1.
Hello World!

FreeBSD on Linux:

#  v -os freebsd main.v

See output below in Current Behavior section.

Expected Behavior

Should compile a FreeBSD executable.

Current Behavior

Cross compilation for FreeBSD failed (second step, lld).
builder error: LLD 18.1.8 (compatible with GNU linkers)
ld.lld: error: undefined symbol: __errno_location
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_debug_strdup)
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_debug_strndup)
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_strdup)
>>> referenced 26 more times

ld.lld: error: undefined symbol: pthread_getattr_np
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_get_main_stack_base)
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_get_stack_base)

ld.lld: error: undefined symbol: __isoc23_strtoul
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_parse_mem_size_arg)
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_linux_main_stack_base)
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_parse_version)
>>> referenced 1 more times

ld.lld: error: undefined symbol: __sigsetjmp
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_find_limit_with_bound)
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_pthread_start_inner)

ld.lld: error: undefined symbol: __ctype_b_loc
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_linux_main_stack_base)
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_linux_main_stack_base)
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_linux_main_stack_base)
>>> referenced 1 more times

ld.lld: error: undefined symbol: __pthread_register_cancel
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_pthread_start_inner)

ld.lld: error: undefined symbol: __pthread_unregister_cancel
>>> referenced by gc.c
>>>               /home/dylan/.vmodules/cache/4b/4b046f6828f71c4330c78912f143fcad.module.builtin.o:(GC_pthread_start_inner)

Possible Solution

No response

Additional Information/Context

No response

V version

V 0.4.7 372a402

Environment details (OS name and version, etc.)

V full version: V 0.4.7 fd7986c.372a402 OS: linux, "CachyOS" Processor: 12 cpus, 64bit, little endian, 13th Gen Intel(R) Core(TM) i5-1335U

getwd: /home/dylan/Repos/rr-dl vexe: /home/dylan/Repos/v/v vexe mtime: 2024-09-27 17:15:42

vroot: OK, value: /home/dylan/Repos/v VMODULES: OK, value: /home/dylan/.vmodules VTMP: OK, value: /tmp/v_1000

Git version: git version 2.46.2 Git vroot status: weekly.2023.45.1-1895-g372a4021 .git/config present: true

CC version: cc (GCC) 14.2.1 20240910 thirdparty/tcc status: thirdparty-linux-amd64 a0799a5b

[!NOTE] You can use the 👍 reaction to increase the issue's priority for developers.

Please note that only the 👍 reaction to the issue itself counts as a vote. Other reactions and those to comments will not be taken into account.

dy-tea avatar Sep 27 '24 17:09 dy-tea