프로그램을 설치하고 실행하려고 합니다.다이어트. 이렇게 하려면 로컬에 최신 버전의 gcc를 설치해야 했습니다(루트/수퍼유저 권한이 없었기 때문에). 다음 명령을 사용하여 이 작업을 수행했습니다.
cd /scratch/wdavis/Tools/source/gcc-4.9.4/
./contrib/download_prerequisites
cd /scratch/wdavis/Tools/gcc/
/scratch/wdavis/Tools/source/gcc-4.9.4/configure --prefix /scratch/wdavis/Tools/local/ --disable-multilib
make bootstrap-lean
make install
모든 일이 잘 진행되고 있는 것 같습니다. 그런 다음 DSuite를 사용하기 시작했습니다.
git clone https://github.com/millanek/Dsuite.git
cd Dsuite/
cd utils/
python3 setup.py install --user --prefix=
cd ../
g++( )의 올바른 버전을 찾을 수 있는 위치를 알려주기 위해 Makefile을 편집해야 했습니다 /scratch/wdavis/Tools/local/bin/g++
. 그런 다음 전화했습니다 make
. 모든 것이 작동하는 것 같습니다. 그러나 DSuite에서는 다음과 같은 오류가 발생합니다.
Dsuite: /lib64/libstdc++.so.6: version
GLIBCXX_3.4.20'을 찾을 수 없습니다(Dsuite에 필요함)`
두 가지 답을 찾았습니다여기그리고여기-L/usr/local/lib64
제안: "필요한 경우 빌드하고 실행 해 볼 수 있습니다 LD_LIBRARY_PATH=/usr/local/lib64
.
export LD_LIBRARY_PATH=/scratch/wdavis/Tools/local/lib64/
Dsuite를 실행하겠습니다. 그러나 make -L/scratch/wdavis/Tools/local/lib64/
아무것도 작동하지 않았습니다. 즉, Dsuite에서 재구축 후에도 동일한 오류가 발생했습니다.
내 질문은 다음과 같습니다
런타임에 동적 링커가 올바른 디렉터리에서 라이브러리를 찾도록 프로그램을 어떻게 구성합니까?
export LD_LIBRARY_PATH=/scratch/wdavis/Tools/local/lib64/
실행하고 Dsuite를 실행하도록 설정한 다음 LD_LIBRARY_PATH를 재설정하지 않고 다른 프로그램을 계속 실행하면 어떻게 됩니까?LD_LIBRARY_PATH를 재설정하는 방법은 무엇입니까?
미리 감사드립니다.
답변1
make -L/scratch/wdavis/Tools/local/lib64/
틀렸다.
-L
ld
make가 아닌 GCC 및 링커 플래그(예: )입니다 .
애플리케이션 언어에 따라 CFLAGS 또는 CXXFLAGS 내보내기를 통해 이를 내보내야 합니다. LDFLAGS를 통해 내보낼 수도 있습니다. 이는 모두 애플리케이션이 구축되고 링크되는 방식에 따라 다르며, GCC 또는 ld를 사용하여 최종 바이너리/라이브러리를 컴파일할 수 있습니다.
예를 들어
export CFLAGS="-L/scratch/wdavis/Tools/local/lib64/"
export CXXFLAGS="-L/scratch/wdavis/Tools/local/lib64/"
export LDFLAGS="-L/scratch/wdavis/Tools/local/lib64/"
./configure && make
LD_LIBRARY_PATH
glibc의 플래그이며 그 목적은 다음과 같습니다.구현하다연결하는 대신 응용프로그램을 사용하세요.
설명서를 주의 깊게 읽어 보십시오. 안에 다 들어있어요 man gcc
,,,man ld
man ld.so
man bash
당신은 그렇습니다unset VAR_NAME