mac osで openssh の 8.3以前をコンパイルしようとすると"compiler cannot create working executables"になる理由
error: *** compiler cannot create working executables, check config.log *** ・ Issue #7 ・ rdp/homebrew-openssh-gssapi ・ GitHub
#60959 (openssh-8.1p1_9+gsskex+kerberos5+xauth: compiler cannot create working executables) – MacPorts
不具合自体はあちこちで散見するのだけど、openssh 8.4p1 で直ったという事以外情報がなかったので、自分で解決してみた。
conftest.c:70:3: error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration] exit(0); ^ conftest.c:70:3: note: include the header <stdlib.h> 1 warning and 1 error generated. |
エラーメッセージで重大なのはこの部分だろう
exit()構文があるけど、 <stdlib.h> がインクルードされていない じゃないかと言ってる。
というわけで、configure を編集して追加してみた
追加するのは3か所...と思ったら20か所くらい直さないと駄目なようだ
さもなくばConfigureが通ってもmakeが通らない。
#include <mach-o/dyld.h> main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) |
#include <stdio.h> int main () { exit(0); ; return 0; } |
#include <libgen.h> #include <string.h> int main(int argc, char **argv) { strncpy(buf,"/etc", 32); |
#include <sys/types.h> #include <dirent.h> int main () { struct dirent d; ; |
#include <stdio.h> int main () { int i = H_SETSIZE; ; |
#include <stdio.h> int main () { char b[5]; ; |
#include <stdio.h> #include <sys/fcntl.h> #include <sys/types.h> #include <sys/wait.h> int pid_t pid; pid = fork(); ; |
:
通るようになった (((・ω・)))
Comments