编译带pcre2特性的ripgrep时,如何为cc添加-std=c99标志?
解决ripgrep编译时C99模式错误的办法
直接通过环境变量传编译标志
最快捷的方式是在编译命令前加上CFLAGS="-std=c99",让Cargo把这个标志传给cc编译器:
CFLAGS="-std=c99" cargo build --release --features 'pcre2'
要是需要用到GNU扩展的C99特性,把-std=c99换成-std=gnu99就行。
用Cargo配置文件永久生效
不想每次编译都敲环境变量的话,在ripgrep项目目录下新建或修改.cargo/config.toml,添加以下内容:
[build] rustflags = ["-C", "link-arg=-std=c99"]
如果想让这个配置全局生效,就修改用户主目录下的~/.cargo/config.toml文件。
更精准的方式是针对特定目标架构设置C编译标志,比如x86_64 Linux系统,在配置文件里加:
[target.x86_64-unknown-linux-gnu] cflags = ["-std=c99"]
清理依赖后重新编译
如果上面的方法没用,先清理已编译的依赖文件,再重新编译:
cargo clean CFLAGS="-std=c99" cargo build --release --features 'pcre2'
内容的提问来源于stack exchange,提问作者m.raynal
相关产品推荐
相关产品推荐

