CentOS7.3上でphp5.3.29をソースコードからコンパイルしてインストールしようとしています。コンパイルしたときに、警告メッセージが出力されるのですが、これらを無くしてビルドできるようにすることは可能でしょうか。
例えば、以下のようなメッセージが出力されます。
/usr/local/src/php-5.3.29/ext/dom/document.c: 関数 ‘zif_dom_document_import_node’ 内: /usr/local/src/php-5.3.29/ext/dom/document.c:1214:5: 警告: passing argument 2 of ‘dom_get_ns’ discards ‘const’ qualifier from pointer target type [デフォルトで有効] nsptr = dom_get_ns(root, nodep->ns->href, &errorcode, nodep->ns->prefix); ^ In file included from /usr/local/src/php-5.3.29/ext/dom/document.c:28:0: /usr/local/src/php-5.3.29/ext/dom/php_dom.h:109:10: 備考: expected ‘char *’ but argument is of type ‘const xmlChar *’ xmlNsPtr dom_get_ns(xmlNodePtr node, char *uri, int *errorcode, char *prefix); ^ /usr/local/src/php-5.3.29/ext/dom/document.c:1214:5: 警告: passing argument 4 of ‘dom_get_ns’ discards ‘const’ qualifier from pointer target type [デフォルトで有効] nsptr = dom_get_ns(root, nodep->ns->href, &errorcode, nodep->ns->prefix); ^ In file included from /usr/local/src/php-5.3.29/ext/dom/document.c:28:0: /usr/local/src/php-5.3.29/ext/dom/php_dom.h:109:10: 備考: expected ‘char *’ but argument is of type ‘const xmlChar *’ xmlNsPtr dom_get_ns(xmlNodePtr node, char *uri, int *errorcode, char *prefix); ^ /usr/local/src/php-5.3.29/ext/pgsql/pgsql.c: 関数 ‘_php_pgsql_notice_handler’ 内: /usr/local/src/php-5.3.29/ext/pgsql/pgsql.c:818:3: 警告: 互換性のないポインタ型から 2 番目の ‘_php_pgsql_trim_message’ の引数に渡しています [デフォルトで有効] notice->message = _php_pgsql_trim_message(message, ¬ice->len); ^ /usr/local/src/php-5.3.29/ext/pgsql/pgsql.c:731:15: 備考: expected ‘int *’ but argument is of type ‘size_t *’ static char * _php_pgsql_trim_message(const char *message, int *len) ^ /usr/local/src/php-5.3.29/ext/pgsql/pgsql.c: 関数 ‘php_pgsql_result2array’ 内: /usr/local/src/php-5.3.29/ext/pgsql/pgsql.c:6272:7: 警告: 互換性のないポインタ型から 3 番目の ‘php_addslashes’ の引数に渡しています [デフォルトで有効] data = php_addslashes(element, element_len, &data_len, 0 TSRMLS_CC); ^ In file included from /usr/local/src/php-5.3.29/ext/standard/php_standard.h:23:0, from /usr/local/src/php-5.3.29/ext/pgsql/pgsql.c:37: /usr/local/src/php-5.3.29/ext/standard/php_string.h:123:14: 備考: expected ‘int *’ but argument is of type ‘size_t *’ PHPAPI char *php_addslashes(char *str, int length, int *new_length, int freeit TSRMLS_DC); ^ /usr/local/src/php-5.3.29/ext/sqlite/libsqlite/src/func.c: 関数 ‘minmaxFunc’ 内: /usr/local/src/php-5.3.29/ext/sqlite/libsqlite/src/func.c:38:10: 警告: ポインタから異なるサイズの整数へのキャストです [-Wpointer-to-int-cast] mask = (int)sqlite_user_data(context); ^ /usr/local/src/php-5.3.29/ext/sqlite/libsqlite/src/func.c: 関数 ‘minmaxStep’ 内: /usr/local/src/php-5.3.29/ext/sqlite/libsqlite/src/func.c:526:10: 警告: ポインタから異なるサイズの整数へのキャストです [-Wpointer-to-int-cast] mask = (int)sqlite_user_data(context); ^
64bitのOS上でコンパイルしたために、int(4byte)とポインタ(8byte)のサイズが違っていることが原因のように思われるものや、ソースコードで関数宣言と異なる型の引数を指定しているものなど、数種類の警告が出てしまいます。
gccで "-m32" という32bit環境用にint,long,ポインタが4byteでコンパイルされるオプションがあったので、「make CC="gcc -m32"」と指定してmakeしてみました。変数のサイズに依る警告は出なくなりましたが、代わりに以下のような警告が大量に出るようになりました。
/usr/local/src/php-5.3.29/ext/hash/hash_sha.c:714:2: 警告: 大きな整数が暗黙に符号無し型に切り詰められました [-Woverflow] L64(0xc6e00bf33da88fc2), L64(0xd5a79147930aa725), L64(0x06ca6351e003826f), L64(0x142929670a0e6e70),
これらの警告を無くしてコンパイルしたいのですが方法が分かりません。
configureやmakeのオプションで無くすことができるのでしょうか。
もしくは警告が出たままでも動作に支障がないものなのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/31 00:31
2017/05/31 02:20
2017/05/31 12:49
2017/06/01 00:42
2017/06/01 01:05
2017/06/01 05:35
2017/06/01 08:11
2017/06/02 02:33