I have installed Rust and I also downloaded the musl
Compiler and installed it.
The musl
Compiler already works but does not produce static libraries by default:
$ musl-gcc memcpy.c
$ ldd a.out
linux-vdso.so.1 => (0x00007fffcf7d7000)
libc.so.6 => /lib64/libc.so.6 (0x00007f47defe9000)
/usr/share/musl/lib/ld-musl-x86_64.so.1 => /lib64/ld-linux-x86-64.so.2 (0x00007f47df3b7000)
$ objdump -T a.out
a.out: formato del fichero elf64-x86-64
DYNAMIC SYMBOL TABLE:
0000000000000000 w D *UND* 0000000000000000 _ITM_deregisterTMCloneTable
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 strlen
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 printf
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __libc_start_main
0000000000000000 w D *UND* 0000000000000000 __gmon_start__
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.14 memcpy
0000000000000000 w D *UND* 0000000000000000 _Jv_RegisterClasses
0000000000000000 w D *UND* 0000000000000000 _ITM_registerTMCloneTable
0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
Moreover this is problematic due to its incompatibilty with older Operating System Versions like documented in this issue:
https://github.com/rust-lang/rust/issues/67173
And thus becomes a crucial roadblock for any Rust Development to go into production.
When I try to use the -static
flag on musl-gcc
it gives an error:
$ musl-gcc -static memcpy.c
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
I could not find any information about this error and also wonder whether this will affect the ablity of Rust to build a static transportable binary.
system
Closed
August 18, 2020, 8:15am
2
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
bjorn3
August 19, 2020, 3:51pm
4
You also have to install the musl libc itself. For example sudo apt install musl musl-dev
on Debian. (not sure if musl-dev
is necessary) Otherwise the linker is not able to find libc.a
to link into your program. I then ran rustup target add x86_64-unknown-linux-musl
once to install a libstd for musl. After that echo 'fn main() { println!("Hello World!"); }' | rustc - --target x86_64-unknown-linux-musl
works fine. I didn't even need musl-gcc
. The resulting executable was statically linked:
$ bingrep ./rust_out
ELF EXEC X86_64-little-endian @ 0x401290:
[...]
Dynamic: None
Libraries(0):
Soname: None
Interpreter: None
is_64: true
is_lib: false
little_endian: true
entry: 401290
1 Like
The code example to test the musl
library I got from this source:
http://www.cplusplus.com/reference/cstring/memcpy/
/* memcpy example */
#include <stdio.h>
#include <string.h>
struct {
char name[40];
int age;
} person, person_copy;
int main ()
{
char myname[] = "Pierre de Fermat";
/* using memcpy to copy string: */
memcpy ( person.name, myname, strlen(myname)+1 );
person.age = 46;
/* using memcpy to copy structure: */
memcpy ( &person_copy, &person, sizeof(person) );
printf ("person_copy: %s, %d \n", person_copy.name, person_copy.age );
return 0;
}
This came up because the Rust hello-world
Application was detected to use glibc
which made it incompatible with older systems without recompiling.
Thank you for looking into this issue.
I downloaded the musl
library and built a RPM Package and installed it:
$ rpm -q --filesbypkg musl
musl /usr/bin/musl-gcc
musl /usr/share/musl
musl /usr/share/musl/bin
musl /usr/share/musl/bin/musl-gcc
musl /usr/share/musl/doc
musl /usr/share/musl/doc/COPYRIGHT
musl /usr/share/musl/doc/INSTALL
musl /usr/share/musl/doc/README
musl /usr/share/musl/doc/VERSION
musl /usr/share/musl/doc/WHATSNEW
musl /usr/share/musl/lib
musl /usr/share/musl/lib/Scrt1.o
musl /usr/share/musl/lib/crt1.o
musl /usr/share/musl/lib/crti.o
musl /usr/share/musl/lib/crtn.o
musl /usr/share/musl/lib/ld-musl-x86_64.so.1
musl /usr/share/musl/lib/libc.a
musl /usr/share/musl/lib/libc.so
musl /usr/share/musl/lib/libcrypt.a
musl /usr/share/musl/lib/libdl.a
musl /usr/share/musl/lib/libm.a
musl /usr/share/musl/lib/libpthread.a
musl /usr/share/musl/lib/libresolv.a
musl /usr/share/musl/lib/librt.a
musl /usr/share/musl/lib/libutil.a
musl /usr/share/musl/lib/libxnet.a
musl /usr/share/musl/lib/musl-gcc.specs
musl /usr/share/musl/lib/rcrt1.o
musl /usr/share/musl/src
musl /usr/share/musl/src/include
musl /usr/share/musl/src/include/aio.h
musl /usr/share/musl/src/include/alloca.h
musl /usr/share/musl/src/include/ar.h
musl /usr/share/musl/src/include/arpa
musl /usr/share/musl/src/include/arpa/ftp.h
musl /usr/share/musl/src/include/arpa/inet.h
musl /usr/share/musl/src/include/arpa/nameser.h
musl /usr/share/musl/src/include/arpa/nameser_compat.h
musl /usr/share/musl/src/include/arpa/telnet.h
musl /usr/share/musl/src/include/arpa/tftp.h
musl /usr/share/musl/src/include/assert.h
musl /usr/share/musl/src/include/bits
musl /usr/share/musl/src/include/bits/alltypes.h
musl /usr/share/musl/src/include/bits/dirent.h
musl /usr/share/musl/src/include/bits/errno.h
musl /usr/share/musl/src/include/bits/fcntl.h
musl /usr/share/musl/src/include/bits/fenv.h
musl /usr/share/musl/src/include/bits/float.h
musl /usr/share/musl/src/include/bits/hwcap.h
musl /usr/share/musl/src/include/bits/io.h
musl /usr/share/musl/src/include/bits/ioctl.h
musl /usr/share/musl/src/include/bits/ioctl_fix.h
musl /usr/share/musl/src/include/bits/ipc.h
musl /usr/share/musl/src/include/bits/ipcstat.h
musl /usr/share/musl/src/include/bits/kd.h
musl /usr/share/musl/src/include/bits/limits.h
musl /usr/share/musl/src/include/bits/link.h
musl /usr/share/musl/src/include/bits/mman.h
musl /usr/share/musl/src/include/bits/msg.h
musl /usr/share/musl/src/include/bits/poll.h
musl /usr/share/musl/src/include/bits/posix.h
musl /usr/share/musl/src/include/bits/ptrace.h
musl /usr/share/musl/src/include/bits/reg.h
musl /usr/share/musl/src/include/bits/resource.h
musl /usr/share/musl/src/include/bits/sem.h
musl /usr/share/musl/src/include/bits/setjmp.h
musl /usr/share/musl/src/include/bits/shm.h
musl /usr/share/musl/src/include/bits/signal.h
musl /usr/share/musl/src/include/bits/socket.h
musl /usr/share/musl/src/include/bits/soundcard.h
musl /usr/share/musl/src/include/bits/stat.h
musl /usr/share/musl/src/include/bits/statfs.h
musl /usr/share/musl/src/include/bits/stdint.h
musl /usr/share/musl/src/include/bits/syscall.h
musl /usr/share/musl/src/include/bits/termios.h
musl /usr/share/musl/src/include/bits/user.h
musl /usr/share/musl/src/include/bits/vt.h
musl /usr/share/musl/src/include/byteswap.h
musl /usr/share/musl/src/include/complex.h
musl /usr/share/musl/src/include/cpio.h
musl /usr/share/musl/src/include/crypt.h
musl /usr/share/musl/src/include/ctype.h
musl /usr/share/musl/src/include/dirent.h
musl /usr/share/musl/src/include/dlfcn.h
musl /usr/share/musl/src/include/elf.h
musl /usr/share/musl/src/include/endian.h
musl /usr/share/musl/src/include/err.h
musl /usr/share/musl/src/include/errno.h
musl /usr/share/musl/src/include/fcntl.h
musl /usr/share/musl/src/include/features.h
musl /usr/share/musl/src/include/fenv.h
musl /usr/share/musl/src/include/float.h
musl /usr/share/musl/src/include/fmtmsg.h
musl /usr/share/musl/src/include/fnmatch.h
musl /usr/share/musl/src/include/ftw.h
musl /usr/share/musl/src/include/getopt.h
musl /usr/share/musl/src/include/glob.h
musl /usr/share/musl/src/include/grp.h
musl /usr/share/musl/src/include/iconv.h
musl /usr/share/musl/src/include/ifaddrs.h
musl /usr/share/musl/src/include/inttypes.h
musl /usr/share/musl/src/include/iso646.h
musl /usr/share/musl/src/include/langinfo.h
musl /usr/share/musl/src/include/lastlog.h
musl /usr/share/musl/src/include/libgen.h
musl /usr/share/musl/src/include/libintl.h
musl /usr/share/musl/src/include/limits.h
musl /usr/share/musl/src/include/link.h
musl /usr/share/musl/src/include/locale.h
musl /usr/share/musl/src/include/malloc.h
musl /usr/share/musl/src/include/math.h
musl /usr/share/musl/src/include/memory.h
musl /usr/share/musl/src/include/mntent.h
musl /usr/share/musl/src/include/monetary.h
musl /usr/share/musl/src/include/mqueue.h
musl /usr/share/musl/src/include/net
musl /usr/share/musl/src/include/net/ethernet.h
musl /usr/share/musl/src/include/net/if.h
musl /usr/share/musl/src/include/net/if_arp.h
musl /usr/share/musl/src/include/net/route.h
musl /usr/share/musl/src/include/netdb.h
musl /usr/share/musl/src/include/netinet
musl /usr/share/musl/src/include/netinet/ether.h
musl /usr/share/musl/src/include/netinet/icmp6.h
musl /usr/share/musl/src/include/netinet/if_ether.h
musl /usr/share/musl/src/include/netinet/igmp.h
musl /usr/share/musl/src/include/netinet/in.h
musl /usr/share/musl/src/include/netinet/in_systm.h
musl /usr/share/musl/src/include/netinet/ip.h
musl /usr/share/musl/src/include/netinet/ip6.h
musl /usr/share/musl/src/include/netinet/ip_icmp.h
musl /usr/share/musl/src/include/netinet/tcp.h
musl /usr/share/musl/src/include/netinet/udp.h
musl /usr/share/musl/src/include/netpacket
musl /usr/share/musl/src/include/netpacket/packet.h
musl /usr/share/musl/src/include/nl_types.h
musl /usr/share/musl/src/include/paths.h
musl /usr/share/musl/src/include/poll.h
musl /usr/share/musl/src/include/pthread.h
musl /usr/share/musl/src/include/pty.h
musl /usr/share/musl/src/include/pwd.h
musl /usr/share/musl/src/include/regex.h
musl /usr/share/musl/src/include/resolv.h
musl /usr/share/musl/src/include/sched.h
musl /usr/share/musl/src/include/scsi
musl /usr/share/musl/src/include/scsi/scsi.h
musl /usr/share/musl/src/include/scsi/scsi_ioctl.h
musl /usr/share/musl/src/include/scsi/sg.h
musl /usr/share/musl/src/include/search.h
musl /usr/share/musl/src/include/semaphore.h
musl /usr/share/musl/src/include/setjmp.h
musl /usr/share/musl/src/include/shadow.h
musl /usr/share/musl/src/include/signal.h
musl /usr/share/musl/src/include/spawn.h
musl /usr/share/musl/src/include/stdalign.h
musl /usr/share/musl/src/include/stdarg.h
musl /usr/share/musl/src/include/stdbool.h
musl /usr/share/musl/src/include/stdc-predef.h
musl /usr/share/musl/src/include/stddef.h
musl /usr/share/musl/src/include/stdint.h
musl /usr/share/musl/src/include/stdio.h
musl /usr/share/musl/src/include/stdio_ext.h
musl /usr/share/musl/src/include/stdlib.h
musl /usr/share/musl/src/include/stdnoreturn.h
musl /usr/share/musl/src/include/string.h
musl /usr/share/musl/src/include/strings.h
musl /usr/share/musl/src/include/stropts.h
musl /usr/share/musl/src/include/sys
musl /usr/share/musl/src/include/sys/acct.h
musl /usr/share/musl/src/include/sys/auxv.h
musl /usr/share/musl/src/include/sys/cachectl.h
musl /usr/share/musl/src/include/sys/dir.h
musl /usr/share/musl/src/include/sys/epoll.h
musl /usr/share/musl/src/include/sys/errno.h
musl /usr/share/musl/src/include/sys/eventfd.h
musl /usr/share/musl/src/include/sys/fanotify.h
musl /usr/share/musl/src/include/sys/fcntl.h
musl /usr/share/musl/src/include/sys/file.h
musl /usr/share/musl/src/include/sys/fsuid.h
musl /usr/share/musl/src/include/sys/inotify.h
musl /usr/share/musl/src/include/sys/io.h
musl /usr/share/musl/src/include/sys/ioctl.h
musl /usr/share/musl/src/include/sys/ipc.h
musl /usr/share/musl/src/include/sys/kd.h
musl /usr/share/musl/src/include/sys/klog.h
musl /usr/share/musl/src/include/sys/membarrier.h
musl /usr/share/musl/src/include/sys/mman.h
musl /usr/share/musl/src/include/sys/mount.h
musl /usr/share/musl/src/include/sys/msg.h
musl /usr/share/musl/src/include/sys/mtio.h
musl /usr/share/musl/src/include/sys/param.h
musl /usr/share/musl/src/include/sys/personality.h
musl /usr/share/musl/src/include/sys/poll.h
musl /usr/share/musl/src/include/sys/prctl.h
musl /usr/share/musl/src/include/sys/procfs.h
musl /usr/share/musl/src/include/sys/ptrace.h
musl /usr/share/musl/src/include/sys/quota.h
musl /usr/share/musl/src/include/sys/random.h
musl /usr/share/musl/src/include/sys/reboot.h
musl /usr/share/musl/src/include/sys/reg.h
musl /usr/share/musl/src/include/sys/resource.h
musl /usr/share/musl/src/include/sys/select.h
musl /usr/share/musl/src/include/sys/sem.h
musl /usr/share/musl/src/include/sys/sendfile.h
musl /usr/share/musl/src/include/sys/shm.h
musl /usr/share/musl/src/include/sys/signal.h
musl /usr/share/musl/src/include/sys/signalfd.h
musl /usr/share/musl/src/include/sys/socket.h
musl /usr/share/musl/src/include/sys/soundcard.h
musl /usr/share/musl/src/include/sys/stat.h
musl /usr/share/musl/src/include/sys/statfs.h
musl /usr/share/musl/src/include/sys/statvfs.h
musl /usr/share/musl/src/include/sys/stropts.h
musl /usr/share/musl/src/include/sys/swap.h
musl /usr/share/musl/src/include/sys/syscall.h
musl /usr/share/musl/src/include/sys/sysinfo.h
musl /usr/share/musl/src/include/sys/syslog.h
musl /usr/share/musl/src/include/sys/sysmacros.h
musl /usr/share/musl/src/include/sys/termios.h
musl /usr/share/musl/src/include/sys/time.h
musl /usr/share/musl/src/include/sys/timeb.h
musl /usr/share/musl/src/include/sys/timerfd.h
musl /usr/share/musl/src/include/sys/times.h
musl /usr/share/musl/src/include/sys/timex.h
musl /usr/share/musl/src/include/sys/ttydefaults.h
musl /usr/share/musl/src/include/sys/types.h
musl /usr/share/musl/src/include/sys/ucontext.h
musl /usr/share/musl/src/include/sys/uio.h
musl /usr/share/musl/src/include/sys/un.h
musl /usr/share/musl/src/include/sys/user.h
musl /usr/share/musl/src/include/sys/utsname.h
musl /usr/share/musl/src/include/sys/vfs.h
musl /usr/share/musl/src/include/sys/vt.h
musl /usr/share/musl/src/include/sys/wait.h
musl /usr/share/musl/src/include/sys/xattr.h
musl /usr/share/musl/src/include/syscall.h
musl /usr/share/musl/src/include/sysexits.h
musl /usr/share/musl/src/include/syslog.h
musl /usr/share/musl/src/include/tar.h
musl /usr/share/musl/src/include/termios.h
musl /usr/share/musl/src/include/tgmath.h
musl /usr/share/musl/src/include/threads.h
musl /usr/share/musl/src/include/time.h
musl /usr/share/musl/src/include/uchar.h
musl /usr/share/musl/src/include/ucontext.h
musl /usr/share/musl/src/include/ulimit.h
musl /usr/share/musl/src/include/unistd.h
musl /usr/share/musl/src/include/utime.h
musl /usr/share/musl/src/include/utmp.h
musl /usr/share/musl/src/include/utmpx.h
musl /usr/share/musl/src/include/values.h
musl /usr/share/musl/src/include/wait.h
musl /usr/share/musl/src/include/wchar.h
musl /usr/share/musl/src/include/wctype.h
musl /usr/share/musl/src/include/wordexp.h
It includes the ld-musl-x86_64.so.1
library therefore the musl
Compiler works and the Executable runs too.
I would like to test the Rust hello-world
Application from your example but how can I add the x86_64-unknown-linux-musl
target without rustup
since I am using the Centos7 rust
Packages?
tesuji
August 20, 2020, 8:30am
7
I installed musl-tools v1.1.19-1
in Ubuntu 18. The memcpy example compiled and be linked statically.
% musl-gcc -static memcpy.c
% ldd a.out
not a dynamic executable
% file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped
tesuji
August 20, 2020, 8:42am
8
There is no need to compile crates in Centos 7 if you build statically with musl.
The statically linked binary should run on Centos 6.
Searching around I found this Post that helped me to sort out the Problem
Statically Linking glibc
The linker cannot find the C libraries required for statically linking your library. You can try and see if libc.a
already exists on your system
The Envrionment Variable LD_LIBRARY_PATH
did not help:
$ export LD_LIBRARY_PATH=/usr/share/musl/lib/
$ musl-gcc -static memcpy.c
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
So I searched in the Repositorio which Package provides that file:
# yum provides */libc.a
glibc-static-2.17-307.el7.1.x86_64 : C library static libraries for -static linking.
Repo : base
Matched from:
Filename : /usr/lib64/libc.a
musl-1.2.0-1.x86_64 : Implementation of the C standard library on top of the Linux system call API
Repo : installed
Matched from:
Filename : /usr/share/musl/lib/libc.a
After installing the glibc-static
Package I could successfully complile the Test Application:
$ musl-gcc -static memcpy.c
$ ldd a.out
not a dynamic executable
$ objdump -T a.out
a.out: file format elf64-x86-64
objdump: a.out: not a dynamic object
DYNAMIC SYMBOL TABLE:
no symbols
So, the musl Compiler works but still I cannot cross-compile Rust Applications with it.
I found this information:
Cross Compiling with Cargo
But it does not explain how I can install the missing Static std
Library to be able to statically compile the Rust Application without using the rustup
tool.
tesuji
August 21, 2020, 1:59pm
11
I'm not really sure, you could try to download and extract https://static.rust-lang.org/dist/rust-std-1.45.2-x86_64-unknown-linux-musl.tar.gz to lib
dir of rust package. Replace "1.45.2" in the URL with your desired Rust version.
Edit: You could find the URL of the tarball in Other Installation Methods - Rust Forge
tesuji
August 21, 2020, 2:03pm
12
Do you contact to package maintainer of musl on Centos ? If I were you, I would do that.
On Centos there is no musl Package so I built the musl Package myself from the Official Source Code Release.
I thought "rust-std-1.43.0-x86_64-unknown-linux-musl.tar.gz" would be matching with my Rust Compiler
$ rustc --version
rustc 1.43.0
but the Binaries produced an incompatibilty error:
$ echo 'fn main() { println!("Hello World!"); }' | rustc - --target x86_64-unknown-linux-musl
error[E0514]: found crate `std` compiled by an incompatible version of rustc
|
= help: please recompile that crate using this compiler (rustc 1.43.0)
= note: the following crate versions were found:
crate `std` compiled by rustc 1.43.0 (4fb7144ed 2020-04-20): /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd-e8c0e82ceeca10f6.rlib
crate `std` compiled by rustc 1.43.0 (4fb7144ed 2020-04-20): /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd-e8c0e82ceeca10f6.so
error: aborting due to previous error
I installed the Binaries matching the already existing Static Binaries of the Standard Library:
$ rpm -q --filesbypkg -p rust-std-musl-static-1.43.0-1.x86_64.rpm
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/crt1.o
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/crti.o
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/crtn.o
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/liballoc-dcb2ca9bba0dcaf0.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libbacktrace-411a6d2a665669d4.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libbacktrace_sys-8f130c3eb2699b97.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libcfg_if-50fc5111220e69d4.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libcompiler_builtins-a21c5fd116c0905d.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libcore-29f38bedcf39ca34.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libgetopts-0a776824252e0326.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libhashbrown-5cf36915c9ac79cb.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/liblibc-44803ddf94d24647.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libpanic_abort-baea1b1ae0bebffb.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libpanic_unwind-4c27f610666d2beb.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libproc_macro-c359b3e5ef721fa5.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_demangle-e7fdfc5b83acfa20.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_std_workspace_alloc-fbedac6f456b9e49.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_std_workspace_core-e63ab8b56a25a562.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_std_workspace_std-51f70eaabb85cdc3.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd-e8c0e82ceeca10f6.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd-e8c0e82ceeca10f6.so
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libterm-c5778cf33005183e.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libtest-d8118bf764659a15.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libtest-d8118bf764659a15.so
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libunicode_width-338cbe2c4d727dc7.rlib
rust-std-musl-static /usr/lib/rustlib/x86_64-unknown-linux-musl/lib/libunwind-c390e07732dc7180.rlib
rust-std-musl-static /usr/share/doc/rust-1.43.0/x86_64-unknown-linux-musl/install.sh
rust-std-musl-static /usr/share/doc/rust-1.43.0/x86_64-unknown-linux-musl/manifest.in
rust-std-musl-static /usr/share/doc/rust-1.43.0/x86_64-unknown-linux-musl/rust-installer-version
tesuji
August 25, 2020, 5:42am
15
Sorry, my mistake there. I guess your rustc is from CentOS repository. Which mean that it might be compiled by different environment (including LLVM) than Rust CI infrastructure. So musl target you downloaded might be incompatible with rustc you are using.
Since you don't want to use rustup, and CentOS doesn't provide musl package and rust-musl std.
You will have to:
Build rustc and std yourself, and cach the artifacts for your CI pipelines.
(unlikely) Ask for musl and rust-musl std package from CentOS or find an alternative repository that provide it.
Use rustup.