Skip to content

配合 quiche 编译 Nginx 1.19.10 时出错 #18

Closed
@rieval

Description

@rieval

OS: Alpine 3.12

内核: Linux 4.4.0-1060-aws x86_64

GCC: gcc version: 9.3.0 (Alpine 9.3.0)

Nginx 版本: 1.19.10

quiche 版本: 直接 clone 了这个 repo 到 /tmp/quiche/ 目录,然后回滚到 d8bb8e36d5c549c2bc8b87525737899abd061daf 这个commit (大佬 README 所写的测试时的 commit)

Nginx 的部分编译配置:

--with-openssl=/tmp/quiche/deps/boringssl
--with-quiche=/tmp/quiche
--with-cc-opt="-g -Ofast -fPIE -pie -march=native -fstack-protector-strong -D_FORTIFY_SOURCE=2 -m64 -O3 -fno-strict-aliasing -DTCP_FASTOPEN=23 -D_GLIBCXX_USE_CXX11_ABI=0 -ffast-math -flto -fuse-linker-plugin --param=ssp-buffer-size=4 -Wformat -Wno-deprecated-declarations -DNGX_LUA_ABORT_AT_PANIC"
--with-ld-opt="-lapr-1 -laprutil-1 -licudata -licuuc -lrt -lpng -lturbojpeg -ljpeg -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,-rpath,/usr/local/lib"

编译时的部分 log(出错前后):

`rustc --crate-name build_script_build --edition=2018 src/build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C debuginfo=2 --cfg 'feature="ffi"' -C metadata=f9071125c3d69bbb -C extra-filename=-f9071125c3d69bbb --out-dir /tmp/quiche/target/debug/build/quiche-f9071125c3d69bbb -C incremental=/tmp/quiche/target/debug/incremental -L dependency=/tmp/quiche/target/debug/deps --extern cmake=/tmp/quiche/target/debug/deps/libcmake-68aa8b03865be436.rlib`

 Running `/tmp/quiche/target/debug/build/ring-e390dddfe04ab00b/build-script-build`

 Running `/tmp/quiche/target/debug/build/quiche-f9071125c3d69bbb/build-script-build`

 Running `rustc --crate-name ring --edition=2018 /root/.cargo/registry/src/github.heygears.com-1ecc6299db9ec823/ring-0.16.20/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 --cfg 'feature="alloc"' --cfg 'feature="default"' --cfg 'feature="dev_urandom_fallback"' --cfg 'feature="once_cell"' -C metadata=28f9ff3d173ba057 -C extra-filename=-28f9ff3d173ba057 --out-dir /tmp/quiche/target/debug/deps -L dependency=/tmp/quiche/target/debug/deps --extern libc=/tmp/quiche/target/debug/deps/liblibc-cfa004638bb84817.rmeta --extern once_cell=/tmp/quiche/target/debug/deps/libonce_cell-bf7e2012cdbe5b0f.rmeta --extern spin=/tmp/quiche/target/debug/deps/libspin-69e46ebdf28e1a75.rmeta --extern untrusted=/tmp/quiche/target/debug/deps/libuntrusted-9605fa52722215b8.rmeta --cap-lints allow -L native=/tmp/quiche/target/debug/build/ring-741b744bfaca4f3a/out -l static=ring-core -l static=ring-test`

 Running `rustc --crate-name quiche --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --crate-type staticlib --crate-type cdylib --emit=dep-info,link -C debuginfo=2 --cfg 'feature="ffi"' -C metadata=46e4b4bd1a86cc9d --out-dir /tmp/quiche/target/debug/deps -C incremental=/tmp/quiche/target/debug/incremental -L dependency=/tmp/quiche/target/debug/deps --extern lazy_static=/tmp/quiche/target/debug/deps/liblazy_static-685a72be080b70c1.rlib --extern libc=/tmp/quiche/target/debug/deps/liblibc-cfa004638bb84817.rlib --extern libm=/tmp/quiche/target/debug/deps/liblibm-c6ab75713beb40d2.rlib --extern log=/tmp/quiche/target/debug/deps/liblog-668c510e02672168.rlib --extern ring=/tmp/quiche/target/debug/deps/libring-28f9ff3d173ba057.rlib -L native=/tmp/quiche/target/debug/build/ring-741b744bfaca4f3a/out`

error[E0658]: use of unstable library feature 'slice_fill'
--> src/lib.rs:2132:39
|
2132 | out[done..done + pad_len].fill(0);
| ^^^^
|
= note: see issue #70758 <https://github.com/rust-lang/rust/issues/70758> for more information

error: aborting due to previous error
For more information about this error, try `rustc --explain E0658`.

error: could not compile `quiche`.
Caused by:
process didn't exit successfully: `rustc --crate-name quiche --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --crate-type staticlib --crate-type cdylib --emit=dep-info,link -C debuginfo=2 --cfg 'feature="ffi"' -C metadata=46e4b4bd1a86cc9d --out-dir /tmp/quiche/target/debug/deps -C incremental=/tmp/quiche/target/debug/incremental -L dependency=/tmp/quiche/target/debug/deps --extern lazy_static=/tmp/quiche/target/debug/deps/liblazy_static-685a72be080b70c1.rlib --extern libc=/tmp/quiche/target/debug/deps/liblibc-cfa004638bb84817.rlib --extern libm=/tmp/quiche/target/debug/deps/liblibm-c6ab75713beb40d2.rlib --extern log=/tmp/quiche/target/debug/deps/liblog-668c510e02672168.rlib --extern ring=/tmp/quiche/target/debug/deps/libring-28f9ff3d173ba057.rlib -L native=/tmp/quiche/target/debug/build/ring-741b744bfaca4f3a/out` (exit code: 1)

make[1]: *** [objs/Makefile:2441: /tmp/quiche/target/debug/libquiche.a] Error 101

make[1]: Leaving directory '/tmp/nginx-1.19.10'
make: *** [Makefile:10: build] Error 2

看着像是 quiche 自己的错误?但是看大佬好像编译通过了,所以想请教一下大佬编译时的一些配置什么的

Edited:

好像是 Rust 的错误?

里面提到了 Rust 1.50 版本: rust-lang/rust#70758 (comment)

看了下 Alpine 3.12 的 Rust 版本好像是 1.44.0-r0,先试一下用 Alpine Edge 编译看看

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions