2010-08-08 3 views
1

libssl.so에 링크 된 프로젝트가 있고 libssl에서 버그가 발생하고 lib의 버전으로 수정하지 않습니다. 그러나 시스템에서 나는 root 계정을 가지고 있지 않기 때문에 libssl과 prerequirements를 자신이 $HOME/opt 아래에 만들었습니다. 이제Autotools - 링크 할 라이브러리 버전 선택

, 내가 뭘 :

./configure --prefix=`$HOME/opt` 
make 

빌드 시스템은 여전히 ​​libssl에의 이전 시스템 전체 버전을 사용합니다.

필자가 컴파일 한 libs와 링크하기 위해 autotools를 "해킹"하는 적절한 방법을 찾으려고합니다.

답변

2

항상 ./configure LDFLAGS=-L$HOME/opt/lib CPPFLAGS=-I$HOME/opt/include입니다. 그러나이 방법은 전역 적으로 해당 접두어의 헤더를 사용하고 거기에있는 libs에 대해 전역 적으로 링크합니다. 많은 프로젝트가 경로를 맞춤 설정할 수 있도록 AC_ARG_WITH을 제공합니다.

AC_ARG_WITH([ssl], ...) 

또는 유사하게

AC_ARG_WITH([ssl-prefix], ...) 
AC_ARG_WITH([ssl-libs], ...) 
AC_ARG_WITH([ssl-includes], ...) 

의 autoconf의 --x-includes

--x-libraries는하지만 그것은 개인적인 취향의 문제 같아요.

./configure LIBS="$HOME/opt/lib/libssl.so.x.y.z" 

또는

./configure LDFLAGS="-Wl,-rpath,$HOME/opt/lib/" 
:

그냥 당신이 당신의 파일을 변경하는 경우에 당신은 그냥하여 LIBS 변수에 문제의 라이브러리를 추가하거나 RPATH를 사용할 수 있습니다 싶지 않아 발견

3

잘 모르겠지만 PKG_CONFIG_PATH에 새 경로를 추가해야합니다. 즉, 프로젝트에서 libssl을 찾는 데 PKG_CHECK_MODULES을 사용하는 경우입니다.

LDFLAGS="-L$HOME/opt/lib" ../configure --prefix="$HOME/opt" 

$HOME/opt/lib처음을 시도 autotools를을 강요 :

+0

내 특정 문제를 해결하기 위해 원본 파일을 수정하고 싶지 않습니다. –

+1

환경 변수를 설정하기 위해 소스 파일을 변경할 필요가 없습니다. ./configure PKG_CONFIG_PATH = $ HOME/opt/lib/pkgconfig를 실행할 수 있습니다. –

+0

오, 알겠습니다. 이제 알겠다. –

0

가는 것 같다. 누구든지 더 나은 대답이나 더 일반적인 대답을 알고 있다면 나는 여전히 모든 귀입니다.

관련 문제