x86_64 에서 php 컴파일 하신분 손들어 보세요. ^^

jinie4u의 이미지

델 1850 모델인데 제온이 박혀 있군요.

기왕이면 다홍치마라고 64비트환경을 경험해보고 싶어서 centos 3.3 x86_64 버전으로 설치했습니다.

그리고 php 를 컴파일 하기위해 configure 를 실행하니 /usr/lib64 밑에 있는 라이브러리들을 찾지 못하네요.

configure 스크립트를 찾아보면 /usr/lib 밑에 있는 라이브러리를 참조하도록 되어 있습니다.

구글님의 도움을 받아 검색을 해보니 x86_64 or amd64 에서는 lib64 patch 를 해서 사용하더군요.

수소문 끝에 레드해 버그질라에서 패치파일을 가져다 패치를 하고(밑의 URL)
https//bugzilla.redhat.com/bugzilla/show_bug.cgi?id=143101

autoconf configure.in > configure2
이렇게 새로운 configure 스크립트를 만들어서 컴파일 했습니다.

그런데 make 까지는 잘 진행이 되는데 make install 에서 에러가 납니다.

libphp5.so 파일을 제대로 생성하지도 못하고 기타 파일들도 /usr/local 밑으로 복사하지 않았습니다.

이렇게 작업이 멈추고 나서 다시 구글님께 여쭤보고 있는데 혹시
kldp 유저분들중에 이런 경험이 있으신분이 계시면 조언 부탁드립니다.

익명 사용자의 이미지

php5를 x86_64에서 설치해보지 않아서 잘 모르지만,

make가 되었다는 것은 어딘가에 libphp5.so가 컴파일되었다는 뜻입니다.

find로 libphp5.so 파일을 찾아보세요.

find . -name "libphp*.so"

make install이 안될때는 그냥 수동으로 설치하셔도 됩니다. 특별한 설정이 아니었다면 php5.ini(?)와 libphp5.so를 설치하고, apache/어쩌구/httpd.conf를
적절히 수정하시면 됩니다.

jinie4u의 이미지

PLD linux 의 5.0.3 소스 rpm 을 참조해서 어렵사리 컴파일하는데 성공했습니다.

어떻게 진행했는지 간략하게 설명드리겠습니다.

먼저 사용된 배포판은 CentOS 3.3 입니다.

apache2 를 컴파일 해서 설치한후 mysql 을 컴파일합니다.
mysql을 바이너리로 설치할 경우 php 컴파일시 다음과 같은 에러를 만나게 되므로 꼭 컴파일 하시기 바랍니다.

/usr/bin/ld: /usr/local/mysql/lib/libmysqlclient.a(libmysql.o): relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC
/usr/local/mysql/lib/libmysqlclient.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libphp5.la] 오류 1

PLD linux 의 php-5.0.3-1.src.rpm 에서 php-lib64.patch 뽑아내서 두 부분을 삭제 했습니다.
하나는 mysql 관련 패치이고 다른 하나는 php.ini 관련 패치입니다.
(사실 패치의 내용은 간단합니다. /usr/lib 참조하도록 되어 있는 부분을 /usr/lib64 를 참조하도록 바꾸는 것입니다.)

저장을 하시고 php 5.0.3 소스에서 패치를 합니다.
patch -p1 < php-lib64.patch
그리고 ./buildconf --force 명령으로 configure 파일을 새로 만들어줍니다.

그 다음은 일반적인 php 컴파일 과정입니다. configure 하시고 make , make install

요점은 /usr/lib 를 참조하도록 하드코딩되어 있는 부분을 /usr/lib64 를 참조하도록 바꾸고 buildconf 명령으로 configure 를 새로 만들어주는 것입니다.

x86_64 를 사용하시는 분들께 도움이 되었으면 합니다.

bloodntear의 이미지

페도라 코어 3 의 php source rpm 에서 php-lib64.patch를
추출하여 이용 하였습니다.

그런데 libmysqlclient.a 에러는 없었으나
libpq.a 에러는 자꾸 발생을 하더라고요,

그리고
처음에는 php 을 컴파일 할때 pgsql 을 gnu 레이아웃 (/usr , shread) 이 아니라 특정 prefix (/usr/local/pgsql)를 주어 설치 하므로 /usr/lib64를 찾지 못하는 현상이 발생 안 할거라고 생각 했었는데 ,
공유 라이브러리를 자꾸 /usr/lib64 에 찾고,
lib64.patch 를 하였는데도 역시 에러가 발생 하여
/usr/local/pgsql/lib 에 있는 공유 라이브러리를 /usr/lib64로
심볼릭 링크하여 해결 하였습니다. 더이상 삽질을 하기 싫더라고요.,

참 그리고 libpq.a 에러는

pgsql 을 컴파일 할때

CFAGS="-fPIC";export CFAGS

을 하고 설치하니 해결이 되였습니다.

아직 64비트 애플리케이션 설치에 대한 정보가 부족하니
저와 같은 상황에 처 하신 분들은 도움이 되셨으면 합니다.

아울러 jinie4u 님에게 참 많은 힌트를 얻었습니다. 감사드립니다.

비명은 지르지마라 , 달콤한 고통을 음미 못할수 있으니 ... 흐흐흐

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.