CentOS에 맞춤형 부스트 버전을 설치하는 방법은 무엇입니까?

CentOS에 맞춤형 부스트 버전을 설치하는 방법은 무엇입니까?

컴파일하고 설치하려고 하는데홍보하다1.54 CentOS의 소스 코드.

문서는 매우 간단하며 인터넷에서 수많은 튜토리얼을 이용할 수 있습니다(1) (2) (). 이것이 내가 한 일입니다:

wget http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz
tar -xzvf boost_1_54_0.tar.gz
cd boost_1_54_0
./bootstrap.sh --prefix=/usr/local
./b2 install --with=all

이 부스트를 올바르게 컴파일하고 설치하면 /usr/local/lib모든 것이 괜찮아 보입니다.

이제 부스트가 필요한 다른 소프트웨어를 컴파일했는데 gcc모든 것이 잘 작동합니다. 내 이해에 따르면 gcc필요한 라이브러리를 찾는 한 모든 것이 잘 될 것입니다.

하지만 이제 문제는 컴파일된 바이너리를 실행하면 다음 오류가 발생한다는 것입니다.

./myProgram
  ./myProgramm: error while loading shared libraries: libboost_system.so.1.54.0: cannot open shared object file: No such file or directory

왜 도서관을 찾을 수 없나요?

또한 다음을 시도했습니다.

ldconfig
locate boost
  [...]

그러나 부스트 라이브러리를 찾을 수 없습니다. 수동으로 경로를 찾았는데 다음과 같습니다.

/usr/local/lib/libboost_system.so.1.54.0

또한 심볼릭 링크를 만들어 보았지만 /usr/lib문제가 해결되지 않았습니다.

어떤 아이디어가 있나요? 어떡해?

답변1

프로그램을 컴파일할 때 추가해야 합니다 -Wl,-R/usr/local/lib.LDFLAGS

-R링커 옵션입니다(런타임 링커 경로를 지정하는 데 사용됨) - 에 전달되도록 -Wl지시합니다 .gccld

공유 라이브러리의 경우 링커가 컴파일 중에 해당 라이브러리를 찾도록 해야 합니다.그리고런타임 시(플래그 -L및 참조 -R)

당신은 그것을 사용할 수 있습니다

$ ldd myProgramm

런타임 링커 경로가 올바르게 설정되었는지 확인하십시오. 즉, 필요한 공유 라이브러리를 찾을 수 있는지/프로그램이 시작될 때 로드할 공유 라이브러리가 무엇인지 확인하십시오.

답변2

해결 방법으로 환경 변수를 사용하여 실행 파일 실행 앞에 접두사를 지정 LD_LIBRRAY_PATH하고 라이브러리가 포함된 디렉터리에 대한 경로를 제공할 수 있다고 생각합니다 .so.

$ LD_LIBRARY_PATH=/usr/local/lib ./myProgram

하지만 문제의 애플리케이션을 컴파일하는 데 사용한 방법이 잘못된 것 같습니다. 좀 더 구체적 으로 컴파일 방법을 확인해야 합니다 myProgram.

답변3

CentOS 7에 Boost 1.54 버전을 설치하려면 다음 명령을 사용하십시오.

sudo wget http://repo.enetres.net/enetres.repo -O /etc/yum.repos.d/enetres.repo

다음 링크에서 lib64icu42-4.2.1-1mdv2010.0.x86_64.rpm을 다운로드합니다. ftp://fr2.rpmfind.net/linux/Mandriva/official/2010.0/x86_64/media/main/release/lib64icu42-4.2.1-1mdv2010.0.x86_64.rpm

RPM 설치:

sudo rpm -ivh lib64icu42-4.2.1-1mdv2010.0.x86_64.rpm

필요한 부스트 라이브러리 버전을 설치합니다.

sudo yum install boost-devel-1.54.0

그게 다야. 좋은 하루 되세요!

리디렉션 링크: https://www.rpmfind.net/linux/rpm2html/search.php?query=libicuuc.so.42()(64비트)

관련 정보