내 프로그램을 빌드하기 위해 내 makefile에서 이것을 사용하고 있습니다.
all: server.cpp
g++ -o server server.cpp -I ~/boost/include -L~/boost/lib -Wl,-rpath,~/boost/lib -lboost_system -lboost_thread -DBOOST_ALL_NO_LIB=1
컴파일 할 때 다음과 같은 경고가 표시됩니다.
/usr/bin/ld: warning: libboost_system.so.1.53.0, needed by /usr/local/lib/libboost_thread.so, may conflict with libboost_system.so.5
프로그램을 실행하면 다음과 같은 경고가 표시됩니다.
./server: error while loading shared libraries: libboost_thread.so.1.53.0: cannot open shared object file: No such file or directory
-Wl / rpath 명령이 현재 작동하지 않습니다. 나는 또한 사용하여 피곤했습니다
export LD_LIBRARY_PATH=~/boost/lib
프로그램을 실행하기 전에 터미널에서 다음을 다시 가져옵니다.
export: relocation error: export: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
프로그램을 실행할 때 사용할 라이브러리를 지정하려면 어떻게해야합니까?
라이브러리는 (일반적으로) boost/lib/stage/lib
, 아닙니다 boost/lib
.
또한 동적 로더 는 ~
확장을 지원하지 않습니다 . 정규화 된 경로를 사용하십시오. 예 :
-Wl,-rpath,/home/hededo/boost/stage/lib
또는 실제로 이전 답변에서 보여준 것처럼
-Wl,-rpath,"$HOME/boost/stage/lib"
따옴표는 $HOME
공백과 같은 특수 문자 가 포함 된 경우 작동하도록하기위한 것입니다.
당신은 또한 볼 수 있습니다
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다