我正在尝试使用musl-gcc构建FIO(由于glibc的许可问题,我们需要使用musl)。我正在尝试使用musl而不是glibc提供的头文件,但是到目前为止,在编译FIO方面还没有成功。我首先使用以下选项运行配置:
my@desktop % ./configure --cc="/usr/local/musl/bin/musl-gcc -I/usr/local/musl/include" --cpu="x86_64" --prefix="/usr/bin"
Operating system Linux
CPU x86_64
Big endian no
Compiler /usr/local/musl/bin/musl-gcc -I/usr/local/musl/include
Cross compile no
Static build no
Wordsize 64
zlib no
Linux AIO support no
POSIX AIO support yes
POSIX AIO support needs -lrt no
POSIX AIO fsync yes
POSIX pshared support yes
Solaris AIO support no
__sync_fetch_and_add yes
__sync_synchronize yes
__sync_val_compare_and_swap yes
libverbs no
rdmacm no
asprintf() yes
vasprintf() yes
Linux fallocate no
POSIX fadvise yes
POSIX fallocate yes
sched_setaffinity(3 arg) yes
sched_setaffinity(2 arg) no
clock_gettime yes
CLOCK_MONOTONIC yes
CLOCK_MONOTONIC_RAW yes
CLOCK_MONOTONIC_PRECISE no
clockid_t yes
gettimeofday yes
fdatasync yes
sync_file_range no
EXT4 move extent yes
Linux splice(2) yes
GUASI no
libnuma no
strsep yes
strcasestr yes
strlcat yes
getopt_long_only() yes
inet_aton yes
socklen_t yes
__thread yes
RUSAGE_THREAD yes
SCHED_IDLE yes
TCP_NODELAY yes
Net engine window_size yes
TCP_MAXSEG yes
RLIMIT_MEMLOCK yes
pwritev/preadv yes
pwritev2/preadv2 no
IPv6 helpers yes
http engine no
Rados engine no
Rados Block Device engine no
setvbuf yes
Gluster API engine no
s390_z196_facilities no
HDFS engine no
MTD no
libpmem no
libpmemblk no
PMDK pmemblk engine no
PMDK dev-dax engine no
PMDK libpmem engine no
DDN's Infinite Memory Engine no
iscsi engine no
lex/yacc for arithmetic no
getmntent yes
getmntinfo no
Static Assert no
bool yes
strndup yes
Valgrind headers no
Zoned block device support no
march_armv8_a_crc_crypto no
cuda no
mkdir(a, b) yes
Build march=native no
CUnit no
__kernel_rwf_t no
-Wimplicit-fallthrough no
MADV_HUGEPAGE yes
gettid no
Consider installing zlib-dev (zlib-devel, some fio features depend on it.
TCMalloc support no
musl-gcc包装脚本的全部要点是gcc使用包含和库路径进行调用,并对其进行调整以将其与主机包含和库生态系统(假定基于glibc)隔离。包括主机系统的内核头文件。如果要与使用任何库(包括诸如内核标头的“仅标头库”)musl-gcc,则需要针对musl而非glibc构建一个版本,并将其安装在musl include / library路径中。
对于内核头文件,它们实际上并不依赖于libc或具有任何库文件。这只是标题。所以,你也许可以通过复制(或符号链接)获得linux,asm以及asm-generic从目录/usr/include到MUSL include目录。或者,您可以从内核源安装它们。
但是,如果您发现需要大量的第三方库资源,那么直接删除musl-gcc并使用真正的交叉编译器会更有意义。如果您愿意从musl.cc中信任它们,则可以获取预构建的二进制文件,或者使用musl-cross-make构建自己的二进制文件(如今在典型的系统上大约需要15分钟)。这将自动为您提供内核头文件,以及一整套的GCC目标库,可让您构建C ++软件,使用OpenMP的软件等。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。