컴 파일 문제

이 장 은 컴 파일 할 때 발생 하 는 오류 상황 을 많이 수집 했다.1.익명 CVS 로 최신 버 전의 소스 패 키 지 를 받 았 지만 스 크 립 트 파일 을 설정 하지 않 았 습 니 다!2.아파 치 에서 PHP 를 설정 하 는 중 문제 가 생 겼 습 니 다.httpd.h 를 찾 을 수 없다 고 했 는데 거기 있 는 것 같 아 요!3.conifgure 를 실행 할 때 include 파일 이나 라 이브 러 리 를 찾 을 수 없다 고 합 니 다.GD,gdbm 또는 다른 가방!4.내 가 파일 language-parser.tab.c 를 컴 파일 할 때 오류 가 발생 했 습 니 다.알림:yytname undeclared.5.내 가 make 를 실 행 했 을 때 처음에는 정상 이 었 으 나 결국 실 패 했 습 니 다.마지막 응용 프로그램 을 연결 할 때 일부 파일 을 찾 을 수 없다 는 오류 가 발생 했 습 니 다.6.PHP 를 연결 할 때 undefined references 라 는 오류 가 발생 합 니 다.7.아파 치 1.3 에서 어떻게 PHP 를 컴 파일 하 는 지 잘 모 르 겠 어 요.8.아파 치 모듈(Unix 아래)을 단계별 로 설 치 했 지만 브 라 우 저 에서 PHP 스 크 립 트 를 열 때 저장 할 지 물 었 습 니 다.9.시스템 사용:--activate-module=src/modules/phop 4/libphop 4.a,하지만 그 파일 은 존재 하지 않 습 니 다.저 는--activate-module=src/modules/phop 4.a 로 바 꿀 수 밖 에 없습니다.자,작 동 하지 않 습 니 다!어 떡 하지?10.PHP 를 Apache 의 정적 모듈 로 컴 파일 하려 고 합 니 다.--activate-module=src/modules/phop 4/libphop 4.a 를 사용 하 십시오.그러나 시스템 은 제 컴 파일 러 가 ANSI 호 환 이 아니 라 고 합 니 다.11.내 가--with-apxs 로 PHP 를 컴 파일 할 때,나 는 항상 이상 한 오 류 를 얻는다.12.make 에서 나 는 microtime 오류 와 많은 RUSAGE 를 얻 었 다.stuff.13.PHP 를 업그레이드 하고 싶 습 니 다.현재 실행 중인 PHP 의 초기 설정 설치 에 사용 되 는./configure 줄 의 내용 을 어디서 볼 수 있 습 니까?14.GD 라 이브 러 리 가 있 는 PHP 를 컴 파일 할 때 이상 한 오류 가 아 닙 니 다.실행 중 segfaults 세그먼트 오류 가 발생 했 습 니 다.1.익명 CVS 로 최신 버 전의 소스 패 키 지 를 받 았 지만 스 크 립 트 파일 을 설정 하지 않 았 습 니 다!configure.in 에서 설정 스 크 립 트 파일 을 만 들 수 있 도록 GNU autoconf 패 키 지 를 설치 해 야 합 니 다.CVS 서버 에서 원본 코드 를 받 은 최상 위 디 렉 터 리 에 있 는./buildconf 를 실행 하기 만 하면 됩 니 다.(configure--enable-maintainer-mode 옵션 을 실행 하지 않 는 한 설정 스 크 립 트 는 다시 생 성 되 지 않 습 니 다.configure.in 파일 이 업데이트 되 었 더 라 도 configure.in 이 변 한 것 을 발견 하면 수 동 으로 해 야 합 니 다.config 나 config.status 가 실 행 된 후에 Makefile 에서@VARIABLE@과 같은 레이 블 을 볼 수 있 습 니 다.)2.아파 치 에서 PHP 를 설정 하 는 중 문제 가 생 겼 습 니 다.httpd.h 를 찾 을 수 없다 고 했 는데 거기 있 는 것 같 아 요!configure/setup 스 크 립 트 Apache 의 최상 위 디 렉 터 리 위 치 를 알려 주 십시오.즉,with-apache=/path/to/apache 를 표시 해 야 합 니 다.-with-apache=/path/to/apache/src 가 아 닙 니 다.3.conifgure 를 실행 할 때 include 파일 이나 라 이브 러 리 를 찾 을 수 없다 고 합 니 다.GD,gdbm 또는 다른 가방!configure 스 크 립 트 를 볼 수 있 습 니 다.헤더 파일 이나 비 표준 라 이브 러 리 의 위 치 를 볼 수 있 습 니 다.C 예비 프로세서 에 특수 한 로 고 를 보 내야 합 니 다.예 를 들 면:
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library./configure 셸 이 csh-variant 를 사용한다 면(왜?):
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library./configure 4.파일 languge-parser.tab.c 를 컴 파일 할 때 오류 가 발생 했 습 니 다.알림:yytname undeclared.Bison 버 전 을 업데이트 해 야 합 니 다.ftp://ftp.gnu.org/pub/gnu/bison/최신 버 전 을 찾 았 습 니 다.5.make 를 실 행 했 을 때 처음에는 정상 이 었 으 나 실 패 했 습 니 다.마지막 응용 프로그램 을 연결 할 때,파일 을 찾 을 수 없다 는 오류 가 발생 했 습 니 다.일부 오래된 버 전의 make 는 functions 디 렉 터 리 에 있 는 컴 파일 된 파일 을 같은 디 렉 터 리 에 두 지 못 하고 cp*.o functions 를 실행 한 다음 make 를 실행 하 는 것 이 좋 을 지 확인 합 니 다.만약 좋다 면,너 는 정말 너의 GNU Make 버 전 을 업데이트 해 야 한다.6.PHP 를 연결 할 때 undefined references 라 는 오류 가 발생 합 니 다.파일 에 있 는 연결 줄 을 보고 모든 가방 이 올 바 르 게 포함 되 어 있 는 지 확인 하 세 요.보통'-ldl'이 부족 하고 지원 하고 싶 은 데이터베이스 패키지 도 있 기 때 문 입 니 다.Apache 1,2.x 에 연결 하고 있다 면 EXTRA 에서LIBS 줄 에 추가 정 보 를 추가 하고 Apache's Configure 스 크 립 트 를 다시 실행 하 시 겠 습 니까?발행 가방 에 있 는 INSTALL 파일 참조.많은 사람들 이'-ldl'을 늘 리 자마자 libphp 4.a 를 얻 었 다 고 말한다.7.아파 치 1.3 에서 어떻게 PHP 를 컴 파일 하 는 지 잘 모 르 겠 어 요.사실 간단 합 니 다.다음 절 차 를 따 르 세 요.Apache 1.3 소스 코드 를 얻 고 아래 위치 에 있 습 니 다.http://www.apache.org/dist/.
어떤 디 렉 터 리 에서 압축 을 풀 수 있 습 니 다.예 를 들 어/usr/local/src/apache-1.3.
PHP 의 패키지 디 렉 터 리 에서 PHP,./configure--with-apache=//apache-1.3(사용자 의 실제 apache-1.3 디 렉 터 리 위치 가를 대체 합 니 다.
입력:make 다음:make install 은 PHP 를 컴 파일 하고 필요 한 파일 을 아파 치 디 렉 터 리 에 복사 합 니 다.
//apache-1.3/src 디 렉 터 리 로 변경 하고 Configuration 파일 을 편집 합 니 다.아래 줄 을 파일 에 추가 합 니 다:AddModule modules/phop 4/libphop 4.a.
입력:.../configure 그리고:make.
이렇게 해서 당신 은 httpd 파일 을 가지 게 되 었 습 니 다!메모:새 Apache./configure 스 크 립 트 를 사용 할 수도 있 습 니 다.패키지 에 있 는 README.configure 를 보면 당연히 PHP 패키지 에 있 는 INSTALL 파일 도 봐 야 합 니 다.8.아파 치 모듈(Unix 아래)을 단계별 로 설 치 했 지만 브 라 우 저 에서 PHP 스 크 립 트 를 열 때 저장 할 지 물 었 습 니 다.이것 은 당신 의 PHP 모듈 이 불 러 오지 않 았 다 는 것 을 의미 합 니 다.아래 세 가지 점 에서 확인 할 수 있 습 니 다.실행 중인 Httpd 가 방금 PHP 를 컴 파일 한 Httpd 인지 확인 하 십시오.실행 가능:/path/to/biary/httpd-l mod 를 보지 못 했다 면php 4.c 열 을 내 면 잘못된 Httpd 를 실행 하 였 습 니 다.다시 설치 하 는 것 이 좋 습 니 다.
Apache.conf 파일 에 올 바른 Mime 형식 을 추 가 했 는 지 확인 합 니 다.AddType application/x-httpd-php 3.php 3(PHP 3)또는 AddType application/x-httpd-php.php(PHP 4)도 AddType 이또는블록 에 포함 되 지 않 았 음 을 보증 합 니 다.
마지막 으로 Apache 1.2 와 Apache 1.3 의 기본 설정 파일 의 위 치 는 다 릅 니 다.AddType 줄 의 설정 파일 이 추 가 된 위 치 를 확인 해 야 합 니 다.httpd.conf 에 뚜렷 한 오 류 를 넣 거나 변경 할 수 있 습 니 다.이 파일 을 읽 으 면 시스템 에서 알려 줍 니 다.9.시스템 사용:--activate-module=src/modules/phop 4/libphop 4.a,하지만 그 파일 은 존재 하지 않 습 니 다.저 는--activate-module=src/modules/phop 4.a 로 바 꿀 수 밖 에 없습니다.자,작 동 하지 않 습 니 다!어 떡 하지?libphp 4.a 사실 이 존재 하지 않 습 니 다.apache 프로 세 스 가 만 들 것 입 니 다!10.PHP 를 Apache 의 정적 모듈 로 컴 파일 하려 고 합 니 다.--activate-module=src/modules/phop 4/libphop 4.a 를 사용 하 십시오.그러나 시스템 은 제 컴 파일 러 가 ANSI 호 환 이 아니 라 고 합 니 다.이 오류 메 시 지 는 아파 치가 오 도 했 기 때문에 업데이트 버 전 으로 수정 할 수 있다.11.내 가--with-apxs 로 PHP 를 컴 파일 할 때,나 는 항상 이상 한 오 류 를 얻는다.이러한 상황 이 발생 하면 세 가지 점 에서 확인 할 수 있 습 니 다.첫째,어떤 이유 로 아파 치 는 apxs Perl 스 크 립 트 를 컴 파일 할 때 적당 한 플래그 변 수 를 만 들 지 않 고 apxs 스 크 립 트 를 찾 습 니 다.(명령 which apxs 를 사용 해 보십시오.보통/usr/local/apache/bin/apxs or/usr/sbin/apxs.열 어서 아래 와 같은 줄 을 찾 습 니 다.
my $CFG_CFLAGS_SHLIB  = ' ';          # substituted via Makefile.tmplmy $CFG_LD_SHLIB      = ' ';          # substituted via Makefile.tmplmy $CFG_LDFLAGS_SHLIB = ' ';          # substituted via Makefile.tmpl 이 이렇게 보 였 다 면 문 제 는 여기에 있 습 니 다.값 에 빈 칸 이나 다른 부정 확 한 값 이 포함 되 어 있 기 때 문 입 니 다.예 를 들 어'q()'와 같이 아래 와 같이:
my $CFG_CFLAGS_SHLIB  = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmplmy $CFG_LD_SHLIB      = 'gcc';                   # substituted via Makefile.tmplmy $CFG_LDFLAGS_SHLIB = q(-shared);              # substituted via Makefile.tmpl 두 번 째 는 Red Hat 6.1 과 6.2 에 만 나타 날 수 있 습 니 다.apxs 스 크 립 트 Red Hat 버 전이 잘못 되 었 습 니 다.이 줄 을 보 세 요.
my $CFG_LIBEXECDIR    = 'modules';         # substituted via APACI install 보시 면 다음 줄 로 변경 하 십시오.
my $CFG_LIBEXECDIR    = '/usr/lib/apache'; # substituted via APACI install 세 번 째,아파 치 를 재 설정/재 설치 하려 면./configure 후 make 전에 make clean 12 를 실행 해 야 합 니 다.make 에서 microtime 오류 와 많은 RUSAGE 를 얻 었 습 니 다.stuff.설치 과정 에서 make 를 할 때 아래 의 오 류 를 보면:
microtime.c: In function `php_if_getrusage':microtime.c:94: storage size of `usg' isn't knownmicrotime.c:97: `RUSAGE_SELF' undeclared (first use in this function)microtime.c:97: (Each undeclared identifier is reported only oncemicrotime.c:97: for each function it appears in.)microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)make[3]: *** [microtime.lo] Error 1make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'make[2]: *** [all-recursive] Error 1make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'make[1]: *** [all-recursive] Error 1make[1]: Leaving directory `/home/master/php-4.0.1/ext'make: *** [all-recursive]Error 1 은 시스템 오류 입 니 다./usr/include 파일 을 복구 해 야 합 니 다.구체 적 인 방법 은 glibc 와 일치 하 는 glibc-devel 패 키 지 를 설치 하 는 것 입 니 다.이 오 류 는 PHP 와 무관 합 니 다.증명 하기 위해 서 는 이렇게 할 수 있 습 니 다.
$cat>test.c<X$gcc-E test.c>/dev/null 오류 가 발생 하면 포함 파일 이 손상 되 었 음 을 증명 합 니 다.13.PHP 를 업그레이드 하고 싶 습 니 다.현재 실행 중인 PHP 의 초기 설정 설치 에 사용 되 는./configure 줄 의 내용 을 어디서 볼 수 있 습 니까?PHP 원본 디 렉 터 리 에 config.nice 파일 을 설치 한 것 을 볼 수 있 습 니 다.그렇지 않 으 면 다른 방법 이 있 습 니 다.간단하게 실행 하기 만 하면 됩 니 다.
스 크 립 트.출력 페이지 의 첫 줄 은.../configure 줄 입 니 다.PHP 를 설정 하 는 데 사 용 된 줄 입 니 다.14.GD 라 이브 러 리 가 있 는 PHP 를 컴 파일 할 때 이상 한 오류 가 아 닙 니 다.실행 할 때 segfaults 세그먼트 오류 가 발생 했 습 니 다.GD 라 이브 러 리 와 PHP 를 컴 파일 할 때 같은 의존 라 이브 러 리(예:libpng)를 사용 하 는 지 확인 해 야 합 니 다.

좋은 웹페이지 즐겨찾기