>  기사  >  类库下载  >  PHP 확장 개발에서 pkg-config를 사용하는 방법

PHP 확장 개발에서 pkg-config를 사용하는 방법

高洛峰
高洛峰원래의
2016-10-14 10:49:511249검색

우선 pkg-config가 무엇을 할 수 있는지 알아보겠습니다. pkg-config에 대한 Wikipedia의 설명은 다음과 같습니다.
pkg-config는 소스 코드에서 소프트웨어를 컴파일할 때 설치된 라이브러리를 쿼리하기 위한 통합 인터페이스를 제공하는 컴퓨터 소프트웨어입니다. pkg-config는 원래 Linux용으로 설계되었지만 현재는 다양한 버전의 BSD, Windows, Mac OS X 및 Solaris에서 사용할 수 있는 버전이 있습니다.
간단히 말하면 pkg-config는 주로 다음과 같은 기능을 제공합니다.

1. 라이브러리의 버전을 확인합니다. 필요한 라이브러리 버전이 요구 사항을 충족하지 않는 경우 잘못된 버전의 라이브러리 파일이 연결되는 것을 방지하기 위해 오류 메시지가 인쇄됩니다.
2. 매크로 정의, 헤더 파일 위치 등 컴파일 전처리 매개변수를 얻습니다.
3. 라이브러리 및 기타 종속 라이브러리의 위치, 파일 이름, 기타 연결 매개변수와 같은 링크 매개변수를 얻습니다.
4. 의존하는 다른 라이브러리에 대한 설정을 자동으로 추가합니다.

최근 opencv를 사용하여 이미지 자르기를 위한 PHP 확장을 개발했습니다. Opencv는 많은 so 라이브러리를 로드해야 합니다. config.m4에 수동으로 추가하는 것은 너무 번거롭고 사후 유지 관리를 활용하지 않습니다. 다행히 opencv는 opencv.pc 파일을 제공하므로 pkg-config를 사용하여 컴파일된 매개변수를 자동으로 얻을 수 있습니다.

다음은 opencv 관련 so 라이브러리와 헤더 파일을 자동으로 불러오기 위해 config.m4에 작성한 코드입니다.

dnl # --with-tclip -> check with-path
  SEARCH_PATH="/usr/lib/pkgconfig" # 定义pkgconfig文件,即扩展名pc文件存放路径
  SEARCH_FOR="opencv.pc"  # 要寻找的文件
  if test -r $PHP_TCLIP/$SEARCH_FOR; then # 
     TCLIP_DIR=$PHP_TCLIP
  else # search default path list
     AC_MSG_CHECKING([for tclip files in default path])
     for i in $SEARCH_PATH ; do
       if test -r $i/$SEARCH_FOR; then
         TCLIP_DIR=$i
         AC_MSG_RESULT(found in $i)
       fi
     done
  fi
  dnl
  if test -z "$TCLIP_DIR"; then
     AC_MSG_RESULT([not found])
     AC_MSG_ERROR([Please reinstall the tclip distribution])
  fi
  
  OPENCV_FLAGS="`pkg-config opencv --libs --cflags opencv`"
  for i in $OPENCV_FLAGS;do
        if test ${i:0:2} = "-I" ;then
                PHP_ADD_INCLUDE(${i:2})
        elif test ${i:${#i}-3} = ".so" ;then
                dir_name=`dirname $i`
                file_name=${i/$dir_name/}
                file_name=${file_name/\/lib/}
                file_name=${file_name/.so/}
        PHP_ADD_LIBRARY_WITH_PATH($file_name,$dir_name,TCLIP_SHARED_LIBADD)
        fi
  done

참고:
if의 조건 부분에 중괄호를 사용하지 마십시오. 그렇지 않으면 m4에서 생성된 makefile에 구문 오류가 발생합니다.

참고문서
http://www.chenjunlu.com/2011/03/understanding-pkg-config-tool/ "pkg-config 도구 이해"
http://www.php .net/manual/zh/internals2.buildsys.configunix.php "UNIX 빌드 시스템과 상호작용: config.m4"


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:php-fpm 시작 오류다음 기사:php-fpm 시작 오류

관련 기사

더보기