bit in struct use.

本文通过一个C++示例程序展示了如何使用位字段,并分析了结构体的内存占用情况。解释了位字段如何影响结构体成员的存储方式及其总体大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//
#include<iostream>

using namespace std;
struct s   // a struct is 4 byte;
{  
 int   a:1;   //占4字节的1位.
 int   b:1;  
 int   c:2;   //占4字节的2位.
 int   d:1;
 int   e:1;
}s;

void main(int arg[])
{
 s.a=2;
 s.b=5;
 s.c=9;
 cout<< sizeof(s)<<"  "<<s.a<<"  "<<s.b<<"  "<<s.c<<endl;
}

//

result:4 0 -1 1

analy:struct is 4 bytes.a is 0010,s.a=0,b is 0101 取101兩位,s.a=-1;同理,s.c=1;

 

tks..

 

 

fatal: [192.168.5.158]: FAILED! => {"changed": true, "cmd": "cd /usr/src/php-5.3.28/ && ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install", "delta": "0:00:07.761196", "end": "2025-06-26 15:07:53.247233", "msg": "non-zero return code", "rc": 1, "start": "2025-06-26 15:07:45.486037", "stderr": "configure: warning: bison versions supported for regeneration of the Zend/PHP parsers: 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.5.1 2.6 2.6.1 2.6.2 2.6.4 (found: none).\nconfigure: warning: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.\nconfigure: error: Cannot find MySQL header files under /usr/local/mysql.\nNote that the MySQL client library is not bundled anymore!", "stderr_lines": ["configure: warning: bison versions supported for regeneration of the Zend/PHP parsers: 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.5.1 2.6 2.6.1 2.6.2 2.6.4 (found: none).", "configure: warning: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.", "configure: error: Cannot find MySQL header files under /usr/local/mysql.", "Note that the MySQL client library is not bundled anymore!"], "stdout": "creating cache ./config.cache\nchecking for Cygwin environment... no\nchecking for mingw32 environment... no\nchecking for egrep... grep -E\nchecking for a sed that does not truncate output... /usr/bin/sed\nchecking host system type... x86_64-unknown-linux-gnu\nchecking target system type... x86_64-unknown-linux-gnu\nchecking for gcc... gcc\nchecking whether the C compiler (gcc ) works... yes\nchecking whether the C compiler (gcc ) is a cross-compiler... no\nchecking whether we are using GNU C... yes\nchecking whether gcc accepts -g... yes\nchecking how to run the C preprocessor... gcc -E\nchecking for icc... no\nchecking for suncc... no\nchecking whether gcc and cc understand -c and -o together... yes\nchecking how to run the C preprocessor... gcc -E\nchecking for AIX... no\nchecking whether ln -s works... yes\nchecking for system library directory... lib\nchecking whether to enable runpaths... yes\nchecking if compiler supports -R... no\nchecking if compiler supports -Wl,-rpath,... yes\nchecking for gawk... gawk\nchecking for bison... no\nchecking for byacc... no\nchecking for bison version... invalid\nchecking for re2c... no\nchecking whether to enable computed goto gcc extension with re2c... no\nchecking whether to force non-PIC code in shared modules... no\nchecking whether /dev/urandom exists... yes\nchecking for pthreads_cflags... -pthread\nchecking for pthreads_lib... \n\n\u001b[1mConfiguring SAPI modules\u001b[m\nchecking for AOLserver support... no\nchecking for Apache 1.x module support via DSO through APXS... no\nchecking for Apache 1.x module support... no\nchecking whether to enable Apache charset compatibility option... no\nchecking for Apache 2.0 filter-module support via DSO through APXS... no\nchecking for Apache 2.0 handler-module support via DSO through APXS... no\nchecking for Apache 1.x (hooks) module support via DSO through APXS... no\nchecking for Apache 1.x (hooks) module support... no\nchecking whether to enable Apache charset compatibility option... no\nchecking for Caudium support... no\nchecking for CLI build... yes\nchecking for Continuity support... no\nchecking for embedded SAPI library support... no\nchecking for FPM build... yes\nchecking for setenv... yes\nchecking for clearenv... yes\nchecking for setproctitle... no\nchecking for library containing socket... none required\nchecking for library containing inet_addr... none required\nchecking for errno.h... yes\nchecking for fcntl.h... yes\nchecking for stdio.h... yes\nchecking for stdlib.h... yes\nchecking for unistd.h... yes\nchecking for sys/uio.h... yes\nchecking for sys/select.h... yes\nchecking for sys/socket.h... yes\nchecking for sys/time.h... yes\nchecking for arpa/inet.h... yes\nchecking for netinet/in.h... yes\nchecking for sysexits.h... yes\nchecking for prctl... yes\nchecking for clock_gettime... yes\nchecking for ptrace... yes\nchecking whether ptrace works... yes\nchecking for proc mem file... mem\nchecking if gcc supports __sync_bool_compare_and_swap... yes\nchecking for TCP_INFO... yes\nchecking for sysconf... yes\nchecking for times... yes\nchecking for kqueue... no\nchecking for port framework... no\nchecking for /dev/poll... no\nchecking for epoll... yes\nchecking for poll... yes\nchecking for select... yes\nchecking for Zeus ISAPI support... no\nchecking for LiteSpeed support... no\nchecking for Milter support... no\nchecking for NSAPI support... no\nchecking for PHTTPD support... no\nchecking for Pi3Web support... no\nchecking whether Roxen module is build using ZTS... no\nchecking for Roxen/Pike support... \nchecking for thttpd... no\nchecking for TUX... no\nchecking for webjames... no\nchecking for chosen SAPI module... fpm\n\n\u001b[1mRunning system checks\u001b[m\nchecking for sendmail... no\nchecking whether system uses EBCDIC... no\nchecking whether byte ordering is bigendian... no\nchecking whether writing to stdout works... This is the test message -- yes\nchecking for socket... yes\nchecking for socketpair... yes\nchecking for htonl... yes\nchecking for gethostname... yes\nchecking for gethostbyaddr... yes\nchecking for yp_get_default_domain... no\nchecking for __yp_get_default_domain... no\nchecking for yp_get_default_domain in -lnsl... no\nchecking for __yp_get_default_domain in -lnsl... no\nchecking for dlopen... no\nchecking for __dlopen... no\nchecking for dlopen in -ldl... yes\nchecking for sin in -lm... yes\nchecking for inet_aton... yes\nchecking for ANSI C header files... yes\nchecking for dirent.h that defines DIR... yes\nchecking for opendir in -ldir... no\nchecking for inttypes.h... yes\nchecking for stdint.h... yes\nchecking for dirent.h... yes\nchecking for ApplicationServices/ApplicationServices.h... no\nchecking for sys/param.h... yes\nchecking for sys/types.h... yes\nchecking for sys/time.h... (cached) yes\nchecking for netinet/in.h... (cached) yes\nchecking for alloca.h... yes\nchecking for arpa/inet.h... (cached) yes\nchecking for arpa/nameser.h... yes\nchecking for assert.h... yes\nchecking for crypt.h... yes\nchecking for dns.h... no\nchecking for fcntl.h... (cached) yes\nchecking for grp.h... yes\nchecking for ieeefp.h... no\nchecking for langinfo.h... yes\nchecking for limits.h... yes\nchecking for locale.h... yes\nchecking for monetary.h... yes\nchecking for netdb.h... yes\nchecking for pwd.h... yes\nchecking for resolv.h... yes\nchecking for signal.h... yes\nchecking for stdarg.h... yes\nchecking for stdlib.h... (cached) yes\nchecking for string.h... yes\nchecking for syslog.h... yes\nchecking for sysexits.h... (cached) yes\nchecking for sys/ioctl.h... yes\nchecking for sys/file.h... yes\nchecking for sys/mman.h... yes\nchecking for sys/mount.h... yes\nchecking for sys/poll.h... yes\nchecking for sys/resource.h... yes\nchecking for sys/select.h... (cached) yes\nchecking for sys/socket.h... (cached) yes\nchecking for sys/stat.h... yes\nchecking for sys/statfs.h... yes\nchecking for sys/statvfs.h... yes\nchecking for sys/vfs.h... yes\nchecking for sys/sysexits.h... no\nchecking for sys/varargs.h... no\nchecking for sys/wait.h... yes\nchecking for sys/loadavg.h... no\nchecking for termios.h... yes\nchecking for unistd.h... (cached) yes\nchecking for unix.h... no\nchecking for utime.h... yes\nchecking for sys/utsname.h... yes\nchecking for sys/ipc.h... yes\nchecking for dlfcn.h... yes\nchecking for assert.h... (cached) yes\nchecking for fopencookie... yes\nchecking for broken getcwd... no\nchecking for broken libc stdio... yes\nchecking whether struct tm is in sys/time.h or time.h... time.h\nchecking for tm_zone in struct tm... yes\nchecking for missing declarations of reentrant functions... done\nchecking for fclose declaration... ok\nchecking for tm_gmtoff in struct tm... yes\nchecking for struct flock... yes\nchecking for socklen_t... yes\nchecking size of size_t... 8\nchecking size of long long... 8\nchecking size of long long int... 8\nchecking size of long... 8\nchecking size of int... 4\nchecking size of intmax_t... 8\nchecking size of ssize_t... 8\nchecking size of ptrdiff_t... 8\nchecking for st_blksize in struct stat... yes\nchecking for st_blocks in struct stat... yes\nchecking for st_rdev in struct stat... yes\nchecking for size_t... yes\nchecking for uid_t in sys/types.h... yes\nchecking for struct sockaddr_storage... yes\nchecking for field sa_len in struct sockaddr... no\nchecking for IPv6 support... yes\nchecking for vprintf... yes\nchecking for alphasort... yes\nchecking for asctime_r... yes\nchecking for chroot... yes\nchecking for ctime_r... yes\nchecking for cuserid... yes\nchecking for crypt... no\nchecking for flock... yes\nchecking for ftok... yes\nchecking for funopen... no\nchecking for gai_strerror... yes\nchecking for gcvt... yes\nchecking for getloadavg... yes\nchecking for getlogin... yes\nchecking for getprotobyname... yes\nchecking for getprotobynumber... yes\nchecking for getservbyname... yes\nchecking for getservbyport... yes\nchecking for gethostname... (cached) yes\nchecking for getrusage... yes\nchecking for gettimeofday... yes\nchecking for gmtime_r... yes\nchecking for getpwnam_r... yes\nchecking for getgrnam_r... yes\nchecking for getpwuid_r... yes\nchecking for grantpt... yes\nchecking for inet_ntoa... yes\nchecking for inet_ntop... yes\nchecking for inet_pton... yes\nchecking for isascii... yes\nchecking for link... yes\nchecking for localtime_r... yes\nchecking for lockf... yes\nchecking for lchown... yes\nchecking for lrand48... yes\nchecking for memcpy... yes\nchecking for memmove... yes\nchecking for mkstemp... yes\nchecking for mmap... yes\nchecking for nl_langinfo... yes\nchecking for perror... yes\nchecking for poll... yes\nchecking for ptsname... yes\nchecking for putenv... yes\nchecking for realpath... yes\nchecking for random... yes\nchecking for rand_r... yes\nchecking for scandir... yes\nchecking for setitimer... yes\nchecking for setlocale... yes\nchecking for localeconv... yes\nchecking for setenv... (cached) yes\nchecking for setpgid... yes\nchecking for setsockopt... yes\nchecking for setvbuf... yes\nchecking for shutdown... yes\nchecking for sin... yes\nchecking for snprintf... yes\nchecking for srand48... yes\nchecking for srandom... yes\nchecking for statfs... yes\nchecking for statvfs... yes\nchecking for std_syslog... no\nchecking for strcasecmp... yes\nchecking for strcoll... yes\nchecking for strdup... yes\nchecking for strerror... yes\nchecking for strftime... yes\nchecking for strnlen... yes\nchecking for strptime... yes\nchecking for strstr... yes\nchecking for strtok_r... yes\nchecking for symlink... yes\nchecking for tempnam... yes\nchecking for tzset... yes\nchecking for unlockpt... yes\nchecking for unsetenv... yes\nchecking for usleep... yes\nchecking for utime... yes\nchecking for vsnprintf... yes\nchecking for vasprintf... yes\nchecking for asprintf... yes\nchecking for nanosleep... yes\nchecking for nanosleep in -lrt... yes\nchecking for getaddrinfo... yes\nchecking for __sync_fetch_and_add... yes\nchecking for strlcat... no\nchecking for strlcpy... no\nchecking for getopt... yes\nchecking whether utime accepts a null argument... yes\nchecking for working alloca.h... (cached) yes\nchecking for alloca... yes\nchecking for declared timezone... yes\nchecking for type of reentrant time-related functions... POSIX\nchecking for readdir_r... yes\nchecking for type of readdir_r... POSIX\nchecking for in_addr_t... yes\nchecking for crypt_r... no\n\n\u001b[1mGeneral settings\u001b[m\nchecking whether to include gcov symbols... no\nchecking whether to include debugging symbols... no\nchecking layout of installed files... PHP\nchecking path to configuration file... /usr/local/php5\nchecking where to scan for configuration files... \nchecking whether to enable safe mode by default... no\nchecking for safe mode exec dir... /usr/local/php/bin\nchecking whether to enable PHP's own SIGCHLD handler... no\nchecking whether to enable magic quotes by default... no\nchecking whether to explicitly link against libgcc... no\nchecking whether to enable short tags by default... yes\nchecking whether to enable dmalloc... no\nchecking whether to enable IPv6 support... yes\nchecking how big to make fd sets... using system default\n\n\u001b[1mConfiguring extensions\u001b[m\nchecking size of long... (cached) 8\nchecking size of int... (cached) 4\nchecking for int32_t... yes\nchecking for uint32_t... yes\nchecking for sys/types.h... (cached) yes\nchecking for inttypes.h... (cached) yes\nchecking for stdint.h... (cached) yes\nchecking for string.h... (cached) yes\nchecking for stdlib.h... (cached) yes\nchecking for strtoll... yes\nchecking for atoll... yes\nchecking for strftime... (cached) yes\nchecking which regex library to use... php\nchecking whether to enable LIBXML support... yes\nchecking libxml2 install dir... no\nchecking for xml2-config path... /usr/bin/xml2-config\nchecking whether libxml build works... yes\nchecking for OpenSSL support... no\nchecking for Kerberos support... no\nchecking for PCRE library to use... bundled\nchecking whether to enable the SQLite3 extension... yes\nchecking bundled sqlite3 library... yes\nchecking for ZLIB support... yes\nchecking if the location of ZLIB install directory is defined... no\nchecking for gzgets in -lz... yes\nchecking whether to enable bc style precision math functions... no\nchecking for BZip2 support... no\nchecking whether to enable calendar conversion support... no\nchecking whether to enable ctype functions... yes\nchecking for cURL support... no\nchecking if we should use cURL for url streams... no\nchecking for QDBM support... no\nchecking for GDBM support... no\nchecking for NDBM support... no\nchecking for Berkeley DB4 support... no\nchecking for Berkeley DB3 support... no\nchecking for Berkeley DB2 support... no\nchecking for DB1 support... no\nchecking for DBM support... no\nchecking for CDB support... no\nchecking for INI File support... no\nchecking for FlatFile support... no\nchecking whether to enable DBA interface... no\nchecking whether to enable DOM support... yes\nchecking for xml2-config path... (cached) /usr/bin/xml2-config\nchecking whether libxml build works... (cached) yes\nchecking for ENCHANT support... no\nchecking whether to enable EXIF (metadata from images) support... no\nchecking for fileinfo support... yes\nchecking for utimes... yes\nchecking for strndup... yes\nchecking whether to enable input filter support... yes\nchecking pcre install prefix... no\nchecking whether to enable FTP support... no\nchecking OpenSSL dir for FTP... no\nchecking for GD support... yes\nchecking for the location of libjpeg... /usr/lib\nchecking for the location of libpng... no\nchecking for the location of libXpm... no\nchecking for FreeType 2... no\nchecking for T1lib support... no\nchecking whether to enable truetype string function in GD... no\nchecking whether to enable JIS-mapped Japanese font support in GD... no\nchecking for fabsf... yes\nchecking for floorf... yes\nchecking for jpeg_read_header in -ljpeg... yes\nchecking for png_write_image in -lpng... yes\nIf configure fails try --with-xpm-dir=<DIR>\nIf configure fails try --with-freetype-dir=<DIR>\nchecking for GNU gettext support... no\nchecking for GNU MP support... no\nchecking for mhash support... no\nchecking whether to enable hash support... yes\nchecking whether byte ordering is bigendian... (cached) no\nchecking size of short... 2\nchecking size of int... (cached) 4\nchecking size of long... (cached) 8\nchecking size of long long... (cached) 8\nchecking for iconv support... yes\nchecking for iconv... yes\nchecking if iconv is glibc's... yes\nchecking if iconv supports errno... yes\nchecking if your cpp allows macro usage in include lines... yes\nchecking for IMAP support... no\nchecking for IMAP Kerberos support... no\nchecking for IMAP SSL support... no\nchecking for InterBase support... no\nchecking whether to enable internationalization support... no\nchecking whether to enable JavaScript Object Serialization support... yes\nchecking for ANSI C header files... (cached) yes\nchecking for LDAP support... no\nchecking for LDAP Cyrus SASL support... no\nchecking whether to enable multibyte string support... yes\nchecking whether to enable multibyte regex support... yes\nchecking whether to check multibyte regex backtrack... yes\nchecking for external libmbfl... no\nchecking for external oniguruma... no\nchecking for variable length prototypes and stdarg.h... yes\nchecking for stdlib.h... (cached) yes\nchecking for string.h... (cached) yes\nchecking for strings.h... yes\nchecking for unistd.h... (cached) yes\nchecking for sys/time.h... (cached) yes\nchecking for sys/times.h... yes\nchecking for stdarg.h... (cached) yes\nchecking size of int... (cached) 4\nchecking size of short... (cached) 2\nchecking size of long... (cached) 8\nchecking for working const... yes\nchecking whether time.h and sys/time.h may both be included... yes\nchecking for working alloca.h... (cached) yes\nchecking for alloca... (cached) yes\nchecking for 8-bit clean memcmp... yes\nchecking for stdarg.h... (cached) yes\nchecking for mcrypt support... no\nchecking for MSSQL support via FreeTDS... no\nchecking for MySQL support... yes\nchecking for specified location of the MySQL UNIX socket... no", "stdout_lines": ["creating cache ./config.cache", "checking for Cygwin environment... no", "checking for mingw32 environment... no", "checking for egrep... grep -E", "checking for a sed that does not truncate output... /usr/bin/sed", "checking host system type... x86_64-unknown-linux-gnu", "checking target system type... x86_64-unknown-linux-gnu", "checking for gcc... gcc", "checking whether the C compiler (gcc ) works... yes", "checking whether the C compiler (gcc ) is a cross-compiler... no", "checking whether we are using GNU C... yes", "checking whether gcc accepts -g... yes", "checking how to run the C preprocessor... gcc -E", "checking for icc... no", "checking for suncc... no", "checking whether gcc and cc understand -c and -o together... yes", "checking how to run the C preprocessor... gcc -E", "checking for AIX... no", "checking whether ln -s works... yes", "checking for system library directory... lib", "checking whether to enable runpaths... yes", "checking if compiler supports -R... no", "checking if compiler supports -Wl,-rpath,... yes", "checking for gawk... gawk", "checking for bison... no", "checking for byacc... no", "checking for bison version... invalid", "checking for re2c... no", "checking whether to enable computed goto gcc extension with re2c... no", "checking whether to force non-PIC code in shared modules... no", "checking whether /dev/urandom exists... yes", "checking for pthreads_cflags... -pthread", "checking for pthreads_lib... ", "", "\u001b[1mConfiguring SAPI modules\u001b[m", "checking for AOLserver support... no", "checking for Apache 1.x module support via DSO through APXS... no", "checking for Apache 1.x module support... no", "checking whether to enable Apache charset compatibility option... no", "checking for Apache 2.0 filter-module support via DSO through APXS... no", "checking for Apache 2.0 handler-module support via DSO through APXS... no", "checking for Apache 1.x (hooks) module support via DSO through APXS... no", "checking for Apache 1.x (hooks) module support... no", "checking whether to enable Apache charset compatibility option... no", "checking for Caudium support... no", "checking for CLI build... yes", "checking for Continuity support... no", "checking for embedded SAPI library support... no", "checking for FPM build... yes", "checking for setenv... yes", "checking for clearenv... yes", "checking for setproctitle... no", "checking for library containing socket... none required", "checking for library containing inet_addr... none required", "checking for errno.h... yes", "checking for fcntl.h... yes", "checking for stdio.h... yes", "checking for stdlib.h... yes", "checking for unistd.h... yes", "checking for sys/uio.h... yes", "checking for sys/select.h... yes", "checking for sys/socket.h... yes", "checking for sys/time.h... yes", "checking for arpa/inet.h... yes", "checking for netinet/in.h... yes", "checking for sysexits.h... yes", "checking for prctl... yes", "checking for clock_gettime... yes", "checking for ptrace... yes", "checking whether ptrace works... yes", "checking for proc mem file... mem", "checking if gcc supports __sync_bool_compare_and_swap... yes", "checking for TCP_INFO... yes", "checking for sysconf... yes", "checking for times... yes", "checking for kqueue... no", "checking for port framework... no", "checking for /dev/poll... no", "checking for epoll... yes", "checking for poll... yes", "checking for select... yes", "checking for Zeus ISAPI support... no", "checking for LiteSpeed support... no", "checking for Milter support... no", "checking for NSAPI support... no", "checking for PHTTPD support... no", "checking for Pi3Web support... no", "checking whether Roxen module is build using ZTS... no", "checking for Roxen/Pike support... ", "checking for thttpd... no", "checking for TUX... no", "checking for webjames... no", "checking for chosen SAPI module... fpm", "", "\u001b[1mRunning system checks\u001b[m", "checking for sendmail... no", "checking whether system uses EBCDIC... no", "checking whether byte ordering is bigendian... no", "checking whether writing to stdout works... This is the test message -- yes", "checking for socket... yes", "checking for socketpair... yes", "checking for htonl... yes", "checking for gethostname... yes", "checking for gethostbyaddr... yes", "checking for yp_get_default_domain... no", "checking for __yp_get_default_domain... no", "checking for yp_get_default_domain in -lnsl... no", "checking for __yp_get_default_domain in -lnsl... no", "checking for dlopen... no", "checking for __dlopen... no", "checking for dlopen in -ldl... yes", "checking for sin in -lm... yes", "checking for inet_aton... yes", "checking for ANSI C header files... yes", "checking for dirent.h that defines DIR... yes", "checking for opendir in -ldir... no", "checking for inttypes.h... yes", "checking for stdint.h... yes", "checking for dirent.h... yes", "checking for ApplicationServices/ApplicationServices.h... no", "checking for sys/param.h... yes", "checking for sys/types.h... yes", "checking for sys/time.h... (cached) yes", "checking for netinet/in.h... (cached) yes", "checking for alloca.h... yes", "checking for arpa/inet.h... (cached) yes", "checking for arpa/nameser.h... yes", "checking for assert.h... yes", "checking for crypt.h... yes", "checking for dns.h... no", "checking for fcntl.h... (cached) yes", "checking for grp.h... yes", "checking for ieeefp.h... no", "checking for langinfo.h... yes", "checking for limits.h... yes", "checking for locale.h... yes", "checking for monetary.h... yes", "checking for netdb.h... yes", "checking for pwd.h... yes", "checking for resolv.h... yes", "checking for signal.h... yes", "checking for stdarg.h... yes", "checking for stdlib.h... (cached) yes", "checking for string.h... yes", "checking for syslog.h... yes", "checking for sysexits.h... (cached) yes", "checking for sys/ioctl.h... yes", "checking for sys/file.h... yes", "checking for sys/mman.h... yes", "checking for sys/mount.h... yes", "checking for sys/poll.h... yes", "checking for sys/resource.h... yes", "checking for sys/select.h... (cached) yes", "checking for sys/socket.h... (cached) yes", "checking for sys/stat.h... yes", "checking for sys/statfs.h... yes", "checking for sys/statvfs.h... yes", "checking for sys/vfs.h... yes", "checking for sys/sysexits.h... no", "checking for sys/varargs.h... no", "checking for sys/wait.h... yes", "checking for sys/loadavg.h... no", "checking for termios.h... yes", "checking for unistd.h... (cached) yes", "checking for unix.h... no", "checking for utime.h... yes", "checking for sys/utsname.h... yes", "checking for sys/ipc.h... yes", "checking for dlfcn.h... yes", "checking for assert.h... (cached) yes", "checking for fopencookie... yes", "checking for broken getcwd... no", "checking for broken libc stdio... yes", "checking whether struct tm is in sys/time.h or time.h... time.h", "checking for tm_zone in struct tm... yes", "checking for missing declarations of reentrant functions... done", "checking for fclose declaration... ok", "checking for tm_gmtoff in struct tm... yes", "checking for struct flock... yes", "checking for socklen_t... yes", "checking size of size_t... 8", "checking size of long long... 8", "checking size of long long int... 8", "checking size of long... 8", "checking size of int... 4", "checking size of intmax_t... 8", "checking size of ssize_t... 8", "checking size of ptrdiff_t... 8", "checking for st_blksize in struct stat... yes", "checking for st_blocks in struct stat... yes", "checking for st_rdev in struct stat... yes", "checking for size_t... yes", "checking for uid_t in sys/types.h... yes", "checking for struct sockaddr_storage... yes", "checking for field sa_len in struct sockaddr... no", "checking for IPv6 support... yes", "checking for vprintf... yes", "checking for alphasort... yes", "checking for asctime_r... yes", "checking for chroot... yes", "checking for ctime_r... yes", "checking for cuserid... yes", "checking for crypt... no", "checking for flock... yes", "checking for ftok... yes", "checking for funopen... no", "checking for gai_strerror... yes", "checking for gcvt... yes", "checking for getloadavg... yes", "checking for getlogin... yes", "checking for getprotobyname... yes", "checking for getprotobynumber... yes", "checking for getservbyname... yes", "checking for getservbyport... yes", "checking for gethostname... (cached) yes", "checking for getrusage... yes", "checking for gettimeofday... yes", "checking for gmtime_r... yes", "checking for getpwnam_r... yes", "checking for getgrnam_r... yes", "checking for getpwuid_r... yes", "checking for grantpt... yes", "checking for inet_ntoa... yes", "checking for inet_ntop... yes", "checking for inet_pton... yes", "checking for isascii... yes", "checking for link... yes", "checking for localtime_r... yes", "checking for lockf... yes", "checking for lchown... yes", "checking for lrand48... yes", "checking for memcpy... yes", "checking for memmove... yes", "checking for mkstemp... yes", "checking for mmap... yes", "checking for nl_langinfo... yes", "checking for perror... yes", "checking for poll... yes", "checking for ptsname... yes", "checking for putenv... yes", "checking for realpath... yes", "checking for random... yes", "checking for rand_r... yes", "checking for scandir... yes", "checking for setitimer... yes", "checking for setlocale... yes", "checking for localeconv... yes", "checking for setenv... (cached) yes", "checking for setpgid... yes", "checking for setsockopt... yes", "checking for setvbuf... yes", "checking for shutdown... yes", "checking for sin... yes", "checking for snprintf... yes", "checking for srand48... yes", "checking for srandom... yes", "checking for statfs... yes", "checking for statvfs... yes", "checking for std_syslog... no", "checking for strcasecmp... yes", "checking for strcoll... yes", "checking for strdup... yes", "checking for strerror... yes", "checking for strftime... yes", "checking for strnlen... yes", "checking for strptime... yes", "checking for strstr... yes", "checking for strtok_r... yes", "checking for symlink... yes", "checking for tempnam... yes", "checking for tzset... yes", "checking for unlockpt... yes", "checking for unsetenv... yes", "checking for usleep... yes", "checking for utime... yes", "checking for vsnprintf... yes", "checking for vasprintf... yes", "checking for asprintf... yes", "checking for nanosleep... yes", "checking for nanosleep in -lrt... yes", "checking for getaddrinfo... yes", "checking for __sync_fetch_and_add... yes", "checking for strlcat... no", "checking for strlcpy... no", "checking for getopt... yes", "checking whether utime accepts a null argument... yes", "checking for working alloca.h... (cached) yes", "checking for alloca... yes", "checking for declared timezone... yes", "checking for type of reentrant time-related functions... POSIX", "checking for readdir_r... yes", "checking for type of readdir_r... POSIX", "checking for in_addr_t... yes", "checking for crypt_r... no", "", "\u001b[1mGeneral settings\u001b[m", "checking whether to include gcov symbols... no", "checking whether to include debugging symbols... no", "checking layout of installed files... PHP", "checking path to configuration file... /usr/local/php5", "checking where to scan for configuration files... ", "checking whether to enable safe mode by default... no", "checking for safe mode exec dir... /usr/local/php/bin", "checking whether to enable PHP's own SIGCHLD handler... no", "checking whether to enable magic quotes by default... no", "checking whether to explicitly link against libgcc... no", "checking whether to enable short tags by default... yes", "checking whether to enable dmalloc... no", "checking whether to enable IPv6 support... yes", "checking how big to make fd sets... using system default", "", "\u001b[1mConfiguring extensions\u001b[m", "checking size of long... (cached) 8", "checking size of int... (cached) 4", "checking for int32_t... yes", "checking for uint32_t... yes", "checking for sys/types.h... (cached) yes", "checking for inttypes.h... (cached) yes", "checking for stdint.h... (cached) yes", "checking for string.h... (cached) yes", "checking for stdlib.h... (cached) yes", "checking for strtoll... yes", "checking for atoll... yes", "checking for strftime... (cached) yes", "checking which regex library to use... php", "checking whether to enable LIBXML support... yes", "checking libxml2 install dir... no", "checking for xml2-config path... /usr/bin/xml2-config", "checking whether libxml build works... yes", "checking for OpenSSL support... no", "checking for Kerberos support... no", "checking for PCRE library to use... bundled", "checking whether to enable the SQLite3 extension... yes", "checking bundled sqlite3 library... yes", "checking for ZLIB support... yes", "checking if the location of ZLIB install directory is defined... no", "checking for gzgets in -lz... yes", "checking whether to enable bc style precision math functions... no", "checking for BZip2 support... no", "checking whether to enable calendar conversion support... no", "checking whether to enable ctype functions... yes", "checking for cURL support... no", "checking if we should use cURL for url streams... no", "checking for QDBM support... no", "checking for GDBM support... no", "checking for NDBM support... no", "checking for Berkeley DB4 support... no", "checking for Berkeley DB3 support... no", "checking for Berkeley DB2 support... no", "checking for DB1 support... no", "checking for DBM support... no", "checking for CDB support... no", "checking for INI File support... no", "checking for FlatFile support... no", "checking whether to enable DBA interface... no", "checking whether to enable DOM support... yes", "checking for xml2-config path... (cached) /usr/bin/xml2-config", "checking whether libxml build works... (cached) yes", "checking for ENCHANT support... no", "checking whether to enable EXIF (metadata from images) support... no", "checking for fileinfo support... yes", "checking for utimes... yes", "checking for strndup... yes", "checking whether to enable input filter support... yes", "checking pcre install prefix... no", "checking whether to enable FTP support... no", "checking OpenSSL dir for FTP... no", "checking for GD support... yes", "checking for the location of libjpeg... /usr/lib", "checking for the location of libpng... no", "checking for the location of libXpm... no", "checking for FreeType 2... no", "checking for T1lib support... no", "checking whether to enable truetype string function in GD... no", "checking whether to enable JIS-mapped Japanese font support in GD... no", "checking for fabsf... yes", "checking for floorf... yes", "checking for jpeg_read_header in -ljpeg... yes", "checking for png_write_image in -lpng... yes", "If configure fails try --with-xpm-dir=<DIR>", "If configure fails try --with-freetype-dir=<DIR>", "checking for GNU gettext support... no", "checking for GNU MP support... no", "checking for mhash support... no", "checking whether to enable hash support... yes", "checking whether byte ordering is bigendian... (cached) no", "checking size of short... 2", "checking size of int... (cached) 4", "checking size of long... (cached) 8", "checking size of long long... (cached) 8", "checking for iconv support... yes", "checking for iconv... yes", "checking if iconv is glibc's... yes", "checking if iconv supports errno... yes", "checking if your cpp allows macro usage in include lines... yes", "checking for IMAP support... no", "checking for IMAP Kerberos support... no", "checking for IMAP SSL support... no", "checking for InterBase support... no", "checking whether to enable internationalization support... no", "checking whether to enable JavaScript Object Serialization support... yes", "checking for ANSI C header files... (cached) yes", "checking for LDAP support... no", "checking for LDAP Cyrus SASL support... no", "checking whether to enable multibyte string support... yes", "checking whether to enable multibyte regex support... yes", "checking whether to check multibyte regex backtrack... yes", "checking for external libmbfl... no", "checking for external oniguruma... no", "checking for variable length prototypes and stdarg.h... yes", "checking for stdlib.h... (cached) yes", "checking for string.h... (cached) yes", "checking for strings.h... yes", "checking for unistd.h... (cached) yes", "checking for sys/time.h... (cached) yes", "checking for sys/times.h... yes", "checking for stdarg.h... (cached) yes", "checking size of int... (cached) 4", "checking size of short... (cached) 2", "checking size of long... (cached) 8", "checking for working const... yes", "checking whether time.h and sys/time.h may both be included... yes", "checking for working alloca.h... (cached) yes", "checking for alloca... (cached) yes", "checking for 8-bit clean memcmp... yes", "checking for stdarg.h... (cached) yes", "checking for mcrypt support... no", "checking for MSSQL support via FreeTDS... no", "checking for MySQL support... yes", "checking for specified location of the MySQL UNIX socket... no"]}
最新发布
06-27
<think>我们正在处理用户关于编译PHP时出现的错误:configureerror:CannotfindMySQLheaderfilesunder/usr/local/mysql根据引用,这个错误是因为找不到MySQL的头文件(headerfiles)。用户可能在配置PHP时指定了MySQL路径,但路径不正确或者缺少必要的开发包。解决思路:1.确认系统中是否安装了MySQL的开发包(通常是libmysqlclient-dev或mysql-devel等,取决于系统)。2.检查MySQL头文件的实际路径,并确保配置时指定的路径正确。3.在配置PHP时使用正确的参数指定MySQL路径。根据引用[1]:错误信息明确说明在/usr/local/mysql下找不到MySQL头文件,并且提示MySQL客户端库不再捆绑。因此,我们需要确保已经安装了MySQL开发包,并且路径正确。引用[2]和[3]提供了一些配置参数的建议:-使用`--with-mysql`(让系统自动查找)-或者指定为`--with-mysql=/usr`(如果MySQL是RPM安装的,通常头文件在/usr/include/mysql下)-使用`--with-mysqli=/usr/bin/mysql_config`来指定mysqli的配置文件位置但是用户当前指定的路径是`/usr/local/mysql`,而错误信息显示在这个路径下找不到头文件。因此,我们需要检查这个路径下是否存在头文件(如mysql.h)。具体步骤:步骤1:检查MySQL头文件是否存在在终端中执行:ls/usr/local/mysql/include查看是否有mysql.h等头文件。步骤2:如果不存在,可能需要安装MySQL开发包或调整路径。例如,在Ubuntu/Debian系统上,可以安装:sudoapt-getinstalllibmysqlclient-dev在CentOS/RHEL系统上,可以安装:sudoyuminstallmysql-devel安装后,头文件通常会出现在标准路径(如/usr/include/mysql)下。步骤3:调整PHP的configure参数如果头文件在标准路径,可以尝试:--with-mysql--with-mysqli=mysql_config(如果mysql_config在PATH中,或者使用完整路径如/usr/bin/mysql_config)或者如果头文件在非标准路径,比如在/usr/local/mysql/include,那么可以指定:--with-mysql=/usr/local/mysql注意:如果使用自定义安装的MySQL(比如安装在/usr/local/mysql),那么需要确保在配置时指定的是MySQL的安装目录(即包含include和lib的目录),而不是直接指定include目录。步骤4:在重新配置前,建议先清理之前的配置(如果之前已经尝试过配置)makeclean根据引用[3]的建议,如果之前配置失败,重新配置前先执行`makeclean`。总结可能的解决方案:方案一:安装MySQL开发包(如果尚未安装)对于Ubuntu/Debian:sudoapt-getupdatesudoapt-getinstalllibmysqlclient-dev对于CentOS/RHEL:sudoyuminstallmysql-devel然后重新配置PHP,使用:./configure--with-mysql--with-mysqli方案二:如果MySQL已经安装在自定义路径(如/usr/local/mysql),但头文件确实存在(比如在/usr/local/mysql/include),那么确保配置参数正确:./configure--with-mysql=/usr/local/mysql...(其他参数)方案三:如果MySQL头文件实际在/usr/include/mysql,那么可以尝试指定为/usr,或者使用自动查找:./configure--with-mysql=/usr...(其他参数)或者./configure--with-mysql...(其他参数)方案四:同时指定mysqli的mysql_config路径(如果知道mysql_config的位置):./configure--with-mysqli=/usr/bin/mysql_config...(其他参数)注意:用户的具体配置参数可能还包括其他选项(如prefix等),需要保留。因此,针对用户的错误信息,我们首先需要确认MySQL头文件的位置,然后根据实际情况调整配置参数。生成相关问题:1.如何检查MySQL头文件是否已经安装?2.在不同Linux发行版上如何安装MySQL开发包?3.如何确定mysql_config的位置?4.重新配置PHP之前为什么要执行`makeclean`?5.如何查看PHP配置参数的正确写法?</think>### 解决PHP编译错误:MySQL头文件缺失 #### 错误分析 当编译PHP 5.3.28时出现 `configure: error: Cannot find MySQL header files under /usr/local/mysql` 错误,表明**配置脚本在指定路径下找不到MySQL开发头文件(如`mysql.h`)**。这些文件是编译PHP的MySQL扩展所必需的,通常包含在MySQL开发包中。 #### 解决方案 ##### ✅ 方法1:安装MySQL开发包(推荐) **根本原因是缺少MySQL开发文件**。根据系统类型安装对应开发包: ```bash # Debian/Ubuntu sudo apt-get install libmysqlclient-dev # CentOS/RHEL sudo yum install mysql-devel ``` 安装后重新运行 `./configure`(无需指定路径),系统会自动查找头文件[^1][^3]。 ##### ✅ 方法2:修正配置路径 如果MySQL已安装但路径错误: ```bash # 移除错误路径参数 ./configure \ --prefix=/usr/local/php-5.3.28 \ --with-mysql \ # 自动查找 --with-mysqli \ # 自动查找 [其他参数] ``` 或尝试指定标准路径: ```bash --with-mysql=/usr \ # CentOS/RHEL的默认路径 --with-mysql=/usr/include/mysql # Debian/Ubuntu的默认路径 ``` ##### ✅ 方法3:验证头文件存在性 手动检查头文件位置: ```bash # 查找mysql.h find /usr -name mysql.h 2>/dev/null # 典型路径示例: # /usr/include/mysql/mysql.h (Debian) # /usr/include/mysql/mysql.h (RHEL) # /usr/local/mysql/include/mysql.h (自定义安装) ``` 找到后使用 `--with-mysql=/实际路径` 配置。 ##### ✅ 清理构建环境 每次修改配置后执行: ```bash make clean # 清理旧编译文件 ./config.status --recheck # 重新检查配置 ``` #### 完整配置示例 ```bash ./configure \ --prefix=/usr/local/php-5.3.28 \ --with-config-file-path=/usr/local/php-5.3.28/etc \ --with-mysql \ --with-mysqli \ --enable-fpm \ [其他必要参数] ``` #### 📌 关键注意事项 1. **开发包 ≠ 客户端**:已安装`mysql-client`不代表有开发头文件,必须安装`libmysqlclient-dev`或`mysql-devel`[^1][^3]。 2. **路径一致性**:若MySQL通过源码安装,确保`--with-mysql`路径指向包含`include/`和`lib/`的目录。 3. **版本兼容性**:PHP 5.3需配合MySQL 5.1/5.5,高版本MySQL可能导致兼容问题。 --- ### 相关问题 1. **如何检查系统中是否已安装MySQL开发包?** `dpkg -l | grep libmysqlclient-dev` (Debian) 或 `rpm -q mysql-devel` (RHEL) 2. **源码编译MySQL后如何让PHP正确识别路径?** 需通过 `--with-mysql=/mysql/install/path` 指定完整安装路径,并确认路径下有`include/mysql.h`。 3. **出现`undefined reference to 'mysql_init'`错误如何解决?** 此问题通常因链接库路径错误,需在PHP配置中添加 `--with-libdir=lib64`(64位系统)或检查`ldconfig`配置[^2]。 4. **PHP 5.3是否兼容MySQL 8.0?** 不兼容。PHP 5.3最高支持MySQL 5.5,需升级PHP版本或降级MySQL[^3]。 [^1]: 缺失MySQL开发包导致的头文件查找失败,需安装`libmysqlclient-dev`或`mysql-devel`。 [^2]: 配置参数`--with-mysqli=/usr/bin/mysql_config`可辅助定位库文件路径。 [^3]: 路径参数需指向MySQL基础目录(含`include/`),非直接指向`include/mysql`子目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值