- ベストアンサー
MYSQLのmakeエラー!インストールが完了できない!
- MYSQLのインストールを完了し、./configureまで進めましたが、make時にエラーが発生しました。
- エラーメッセージ: make[2]: *** [libmysql.lo] エラー 1、make[2]: 出ます ディレクトリ `/usr/local/src/mysql-4.0.17/libmysql'、make[1]: *** [all-recursive] エラー 1、make[1]: 出ます ディレクトリ `/usr/local/src/mysql-4.0.17'、make: *** [all] エラー 2
- Apacheは問題なくインストールできたが、MYSQLのmake時にエラーが出ています。このエラーは何を意味しているのか教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>インストールはソースで行いたいので、まったく別の方法ございましたらお知らせください。 こちらでは、フルインストールしたRedHat9 で、MySQL4.0.17は問題なく インストールできますし、問題なく動いています。 # ./configure # make # make install MySQLのコンパイルに必要な何かがインストールされていないのでは?
その他の回答 (4)
- tatsu99
- ベストアンサー率52% (391/751)
#3です。 >プロトタイプとは具体的にはどう追記すればよろしいのでしょうか 1797: too few arguments to function `gethostbyname_r' のメッセージから gethostbyname_rとmy_gethostbyname_rはおなじものと解釈します。(違う場合はmy_gethostbyname_rのプロトタイプ(この関数の引数について記述した部分)を提示してください) man gethostbyname_rより int gethostbyname_r (const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop); が得られます。 ここで、引数の数は6個です。 一方、hp = my_gethostbyname_r(host,&tmp_hostent,buff2.buff,sizeof(buff2), &tmp_errno); では5個です。 従って、数が合わず、エラーとなります。 対策:(勘です。)struct hostent **resultの部分がたりないので、これを補います。 struct hostent *temp_result;と定義し hp = my_gethostbyname_r(host,&tmp_hostent,buff2.buff,sizeof(buff2), &temp_result,&tmp_errno); としてください。
お礼
どうもありがとうございました。 残念ながら私には無理そうです。 mysqlのバージョンはいくつか試してみたのですが、 ダメでした。 インストールはソースで行いたいので、まったく別の方法ございましたらお知らせください。 gethostbyname_rの元を変更するなど、ありがとうございました。
- tatsu99
- ベストアンサー率52% (391/751)
翻訳します。 libmysql.c: In function `mysql_real_connect': このmysql_real_connect関数において libmysql.c:1797: warning: passing arg 5 of `gethostbyname_r' from incompatible p ointer type 意味:5番目のパラメータのポインターの型が合っていない。 対策:合うようにキャストする。(警告なので無視しても良い) libmysql.c:1797: too few arguments to function `gethostbyname_r' 意味:gethostbyname_rを呼び出すときの引数が足りない。 対策:引数の数をプロトタイプに合わせ、追加する。 gethostbyname_rについては手元に資料がないので、よくわかりませんが、gethostbynameは、ホスト名からそのホストのIPアドレスなどの情報を取得する関数です。man gethostbyname_rで、その詳細がわかるはずですので、それで調べてみて下さい。 libmysql.c:1797: warning: assignment makes pointer from integer without a cast 意味:整数型のデータからキャストせずにポインターを作ります。 対策:合うようにキャストする(警告なので無視して良い)
補足
たびたびすいません。 プロトタイプとは具体的にはどう追記すればよろしいのでしょうか [libmysql.c:1797] hp = my_gethostbyname_r(host,&tmp_hostent,buff2.buff,sizeof(buff2), &tmp_errno); [man gethostbyname_r] GETHOSTBYNAME(3) Linux Programmer's Manual GETHOSTBYNAME(3) 名前 gethostbyname, gethostbyaddr, sethostent, endhostent, herror, hstrerror - ネットワーク上のホストのエントリを取得する 書式 #include <netdb.h> extern int h_errno; struct hostent *gethostbyname(const char *name); #include <sys/socket.h> /* for AF_INET */ struct hostent *gethostbyaddr(const char *addr, int len, int type); void sethostent(int stayopen); void endhostent(void); void herror(const char *s); const char *hstrerror(int err);
- nazo-nazo
- ベストアンサー率39% (17/43)
失敗を少なくする為には 1.README等は、しっかり読む。 2.configure後は、config.logの内容を見る。 問題解決をスムーズに行うには 1.UNIXのCプログラミング、メークファイル作成、コンパイルを行っていき基礎的なデバッカを身に付ける。(時間にゆとりあれば勉強してください) 急がば回れです。
- astronaut
- ベストアンサー率58% (303/516)
これはエラーメッセージの最後の部分だと思います コンパイルエラーは連鎖的に発生するので、エラーの出始めの部分から順に解決していく必用があります。 最初にエラーになっている部分の前後10行ずつぐらいを 貼ってみてください。
補足
長いコメント失礼いたします。 こちらです。 gcc -DDEFAULT_CHARSET_HOME=\"/usr/local/mysql\" -DDATADIR=\"/usr/local/mysql/var \" -DSHAREDIR=\"/usr/local/mysql/share/mysql\" -DUNDEF_THREADS_HACK -DDONT_USE_R AID -DMYSQL_CLIENT -I. -I. -I.. -I./../include -I../include -I./.. -I.. -I.. -O3 -DDBUG_OFF -c libmysql.c -MT libmysql.lo -MD -MP -MF .deps/libmysql.TPlo -fPIC -DPIC -o .libs/libmysql.lo libmysql.c: In function `mysql_real_connect': libmysql.c:1797: warning: passing arg 5 of `gethostbyname_r' from incompatible p ointer type libmysql.c:1797: too few arguments to function `gethostbyname_r' libmysql.c:1797: warning: assignment makes pointer from integer without a cast make[2]: *** [libmysql.lo] エラー 1 make[2]: 出ます ディレクトリ `/usr/local/src/mysql-4.0.17/libmysql' make[1]: *** [all-recursive] エラー 1 make[1]: 出ます ディレクトリ `/usr/local/src/mysql-4.0.17' make: *** [all] エラー 2
お礼
そのとおりのようでした。mysqlのサイトを見てみたところこの種のエラー報告が見つかったのですが、 If you get a compilation error on Linux (e.g. SuSE Linux 8.1 or Red Hat Linux 7.3) similar to the following one: libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from incompatible pointer type libmysql.c:1329: too few arguments to function `gethostbyname_r' libmysql.c:1329: warning: assignment makes pointer from integer without a cast make[2]: *** [libmysql.lo] Error 1 By default, the configure script attempts to determine the correct number of arguments by using g++ the GNU C++ compiler. This test yields wrong results, if g++ is not installed. There are two ways to work around this problem: 次のものに似ているLinux(例えばSuSE Linux 8.1あるいはRed Hat Linux 7.3)の上の編集エラーを得る場合:libmysql.c:1329:警告:非互換性のポインター・タイプlibmysql.cから「gethostbyname_r」のarg 5を渡すこと:1329:関数「gethostbyname_r」libmysql.cへのあまりにも少数の議論:1329:警告:割り当てはキャストのない整数でポインターを作ります。[2]を作ってください:***[libmysql.lo]エラー1デフォルトによって、configureスクリプトは、g++の使用により議論の正確な数を決定することを試みます、GNU C++コンパイラー。g++がインストールされない場合、このテストは間違っている結果を産出します。この問題のまわりで働くために2つの方法があります: Make sure that the GNU C++ g++ is installed. On some Linux distributions, the required package is called gpp, on others it is named gcc-c++. GNU C++g++がインストールされることを確かめてください。 Use gcc as your C++ compiler by setting the CXX environment variable to gcc: export CXX="gcc" gccにCXX環境変数をセットすることによりあなたのC++コンパイラーとしてgccを使用してください:輸出CXX=「gcc」 Please note that you need to run configure again afterwards. 走る必要があることに注意してください、形成する、再び後で。 *********************** となっておりました。少し前進できました ありがとうございます