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は失敗続きもインストールできたのですが
上記は何を意味しているのでしょうか?
No.5ベストアンサー
- 回答日時:
>インストールはソースで行いたいので、まったく別の方法ございましたらお知らせください。
こちらでは、フルインストールしたRedHat9 で、MySQL4.0.17は問題なく
インストールできますし、問題なく動いています。
# ./configure
# make
# make install
MySQLのコンパイルに必要な何かがインストールされていないのでは?
そのとおりのようでした。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.
走る必要があることに注意してください、形成する、再び後で。
***********************
となっておりました。少し前進できました
ありがとうございます
No.4
- 回答日時:
#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の元を変更するなど、ありがとうございました。
No.3
- 回答日時:
翻訳します。
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);
No.2
- 回答日時:
失敗を少なくする為には
1.README等は、しっかり読む。
2.configure後は、config.logの内容を見る。
問題解決をスムーズに行うには
1.UNIXのCプログラミング、メークファイル作成、コンパイルを行っていき基礎的なデバッカを身に付ける。(時間にゆとりあれば勉強してください)
急がば回れです。
No.1
- 回答日時:
これはエラーメッセージの最後の部分だと思います
コンパイルエラーは連鎖的に発生するので、エラーの出始めの部分から順に解決していく必用があります。
最初にエラーになっている部分の前後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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL Mac です。ローカルホストの phpMyAdmin にアクセスできません。 1 2023/06/06 17:14
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- その他(ソフトウェア) Makefileが実行できない 2 2022/07/28 23:49
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- MySQL MySQLでcreateが使えない MySQLを使ってデータベースを作ろうと思い、CREATE を使 3 2022/06/19 15:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gccのインクルードパスの確認
-
PHPのインストールがうまくでき...
-
make: command not foundについて
-
freetype2について
-
glibcバージョンアップ
-
ソースからmakeした場合の削除方法
-
Apacheのバージョンアップ方法
-
PHP5ビルド時のundefined refer...
-
apacheが使うopensslの差し替え...
-
solarisのmakeについて
-
make でエラー
-
Debianでのmakeコマンドインス...
-
パソコンでゲームをプレイしよ...
-
CPANでインストールしたモジュ...
-
Windows2000を最新マシンにイン...
-
yumインストール先は、何で決ま...
-
osインストールできない
-
ubuntu 初期化について
-
1枚でも「1枚”組”」なのですか?
-
外部レポジトリとは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccのインクルードパスの確認
-
makeコマンドができない
-
*** ターゲット `all' を make ...
-
Linuxのgccのインクルードパス?
-
make でエラー
-
glibcバージョンアップ
-
Solaris10でCコンパイラが見...
-
apachectlが使えない
-
macos での /usr/local/lib と...
-
ソースファイルのアンインスト...
-
linuxの/usr/includeについて
-
makeの際、 Killedとなったり...
-
perlのダウングレード方法
-
OpensslのVer.ダウン
-
RedHat9のgtk-configってどこ?
-
ソースからmakeした場合の削除方法
-
makeしてinstall
-
ubuntu linux の./configure ru...
-
PROMISE TX4000 RAIDドライバー...
-
openSSLで秘密鍵ファイルエラー
おすすめ情報