--with-cflags="-Wno-error=implicit-function-declaration" 是做什么的?
What does --with-cflags="-Wno-error=implicit-function-declaration" do?
我正在努力安装 thin
作为 Ruby 项目的依赖项,当我在这里遇到这个解决方案时:https://github.com/macournoyer/thin/issues/365#issuecomment-692063842 (gem install thin -v '1.7.2' -- --with-cflags="-Wno-error=implicit-function-declaration"
)
它有效,但我对 Ruby 不是很熟悉所以不知道 为什么 。这面旗帜在做什么?为什么它使安装工作没有任何问题?
我在此修复之前遇到的错误:
❯ gem install thin -v '1.7.2'
Building native extensions. This could take a while...
ERROR: Error installing thin:
ERROR: Failed to build gem native extension.
current directory: /Users/XXX/.gem/ruby/2.7.1/gems/thin-1.7.2/ext/thin_parser
/Users/XXX/.rubies/ruby-2.7.1/bin/ruby -I /Users/XXX/.rubies/ruby-2.7.1/lib/ruby/2.7.0 -r ./siteconf20210923-79304-z21dcg.rb extconf.rb
checking for main() in -lc... yes
creating Makefile
current directory: /Users/XXX/.gem/ruby/2.7.1/gems/thin-1.7.2/ext/thin_parser
make "DESTDIR=" clean
current directory: /Users/XXX/.gem/ruby/2.7.1/gems/thin-1.7.2/ext/thin_parser
make "DESTDIR="
compiling parser.c
parser.c:31:18: warning: unused variable 'http_parser_en_main' [-Wunused-const-variable]
static const int http_parser_en_main = 1;
^
1 warning generated.
compiling thin.c
thin.c:242:3: error: implicit declaration of function 'thin_http_parser_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_init(hp);
^
thin.c:242:3: note: did you mean 'http_parser_init'?
./parser.h:41:5: note: 'http_parser_init' declared here
int http_parser_init(http_parser *parser);
^
thin.c:260:3: error: implicit declaration of function 'thin_http_parser_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_init(http);
^
thin.c:277:3: error: implicit declaration of function 'thin_http_parser_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_init(http);
^
thin.c:294:3: error: implicit declaration of function 'thin_http_parser_finish' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_finish(http);
^
thin.c:294:3: note: did you mean 'Thin_HttpParser_finish'?
thin.c:290:7: note: 'Thin_HttpParser_finish' declared here
VALUE Thin_HttpParser_finish(VALUE self)
^
thin.c:296:10: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
return thin_http_parser_is_finished(http) ? Qtrue : Qfalse;
^
thin.c:334:5: error: implicit declaration of function 'thin_http_parser_execute' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_execute(http, dptr, dlen, from);
^
thin.c:334:5: note: did you mean 'Thin_HttpParser_execute'?
thin.c:317:7: note: 'Thin_HttpParser_execute' declared here
VALUE Thin_HttpParser_execute(VALUE self, VALUE req_hash, VALUE data, VALUE start)
^
thin.c:338:8: error: implicit declaration of function 'thin_http_parser_has_error' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
if(thin_http_parser_has_error(http)) {
^
thin.c:338:8: note: did you mean 'http_parser_has_error'?
./parser.h:44:5: note: 'http_parser_has_error' declared here
int http_parser_has_error(http_parser *parser);
^
thin.c:359:10: error: implicit declaration of function 'thin_http_parser_has_error' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
return thin_http_parser_has_error(http) ? Qtrue : Qfalse;
^
thin.c:374:10: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
return thin_http_parser_is_finished(http) ? Qtrue : Qfalse;
^
9 errors generated.
make: *** [thin.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/XXX/.gem/ruby/2.7.1/gems/thin-1.7.2 for inspection.
Results logged to /Users/XXX/.gem/ruby/2.7.1/extensions/x86_64-darwin-19/2.7.0-static/thin-1.7.2/gem_make.out
我没有正确阅读堆栈跟踪...
看起来这个标志基本上是告诉编译器忽略隐式声明函数的位置,而不是在发生这种情况时出错。
我正在努力安装 thin
作为 Ruby 项目的依赖项,当我在这里遇到这个解决方案时:https://github.com/macournoyer/thin/issues/365#issuecomment-692063842 (gem install thin -v '1.7.2' -- --with-cflags="-Wno-error=implicit-function-declaration"
)
它有效,但我对 Ruby 不是很熟悉所以不知道 为什么 。这面旗帜在做什么?为什么它使安装工作没有任何问题?
我在此修复之前遇到的错误:
❯ gem install thin -v '1.7.2'
Building native extensions. This could take a while...
ERROR: Error installing thin:
ERROR: Failed to build gem native extension.
current directory: /Users/XXX/.gem/ruby/2.7.1/gems/thin-1.7.2/ext/thin_parser
/Users/XXX/.rubies/ruby-2.7.1/bin/ruby -I /Users/XXX/.rubies/ruby-2.7.1/lib/ruby/2.7.0 -r ./siteconf20210923-79304-z21dcg.rb extconf.rb
checking for main() in -lc... yes
creating Makefile
current directory: /Users/XXX/.gem/ruby/2.7.1/gems/thin-1.7.2/ext/thin_parser
make "DESTDIR=" clean
current directory: /Users/XXX/.gem/ruby/2.7.1/gems/thin-1.7.2/ext/thin_parser
make "DESTDIR="
compiling parser.c
parser.c:31:18: warning: unused variable 'http_parser_en_main' [-Wunused-const-variable]
static const int http_parser_en_main = 1;
^
1 warning generated.
compiling thin.c
thin.c:242:3: error: implicit declaration of function 'thin_http_parser_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_init(hp);
^
thin.c:242:3: note: did you mean 'http_parser_init'?
./parser.h:41:5: note: 'http_parser_init' declared here
int http_parser_init(http_parser *parser);
^
thin.c:260:3: error: implicit declaration of function 'thin_http_parser_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_init(http);
^
thin.c:277:3: error: implicit declaration of function 'thin_http_parser_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_init(http);
^
thin.c:294:3: error: implicit declaration of function 'thin_http_parser_finish' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_finish(http);
^
thin.c:294:3: note: did you mean 'Thin_HttpParser_finish'?
thin.c:290:7: note: 'Thin_HttpParser_finish' declared here
VALUE Thin_HttpParser_finish(VALUE self)
^
thin.c:296:10: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
return thin_http_parser_is_finished(http) ? Qtrue : Qfalse;
^
thin.c:334:5: error: implicit declaration of function 'thin_http_parser_execute' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
thin_http_parser_execute(http, dptr, dlen, from);
^
thin.c:334:5: note: did you mean 'Thin_HttpParser_execute'?
thin.c:317:7: note: 'Thin_HttpParser_execute' declared here
VALUE Thin_HttpParser_execute(VALUE self, VALUE req_hash, VALUE data, VALUE start)
^
thin.c:338:8: error: implicit declaration of function 'thin_http_parser_has_error' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
if(thin_http_parser_has_error(http)) {
^
thin.c:338:8: note: did you mean 'http_parser_has_error'?
./parser.h:44:5: note: 'http_parser_has_error' declared here
int http_parser_has_error(http_parser *parser);
^
thin.c:359:10: error: implicit declaration of function 'thin_http_parser_has_error' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
return thin_http_parser_has_error(http) ? Qtrue : Qfalse;
^
thin.c:374:10: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
return thin_http_parser_is_finished(http) ? Qtrue : Qfalse;
^
9 errors generated.
make: *** [thin.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/XXX/.gem/ruby/2.7.1/gems/thin-1.7.2 for inspection.
Results logged to /Users/XXX/.gem/ruby/2.7.1/extensions/x86_64-darwin-19/2.7.0-static/thin-1.7.2/gem_make.out
我没有正确阅读堆栈跟踪...
看起来这个标志基本上是告诉编译器忽略隐式声明函数的位置,而不是在发生这种情况时出错。