开发者社区> 问答> 正文

针对Musl-gcc编译fio的问题

我正在尝试使用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

展开
收起
祖安文状元 2020-01-07 14:24:45 3020 0
1 条回答
写回答
取消 提交回答
  • 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的软件等。

    2020-01-07 14:24:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载