코드 재사용을 위해 여러 라이브러리로 분리 된 응용 프로그램이 있습니다. Windows에서 실행 파일과 동일한 경로에 .dll 파일을 넣으면 자동으로 찾습니다. 리눅스에서는 (환경에 대한 경로를 하드 코드하기 때문에) 환경 변수 LD_LIBRARY_PATH
을 지정하거나 실행 파일 앞에 라이브러리를 미리로드해야합니다.실행 가능 디렉토리로 공유 라이브러리 경로
나는 링커 옵션 -Wl,-rpath=<PATH>
을 사용하여 경로를 포함하는 것에 대해 몇 가지를 보았으며 경로로 .
을 사용해 보았습니다. 하지만 현재 실행중인 디렉토리가 아니라 실행 파일의 디렉토리를 볼 수 있습니다.
기본적으로 공유 라이브러리에 대한 실행 파일의 디렉토리를 링커에서 확인하는 방법이 있습니까 (예 : Windows)?
감사합니다. Matt
$ ORIGIN을 사용하는 경우 링커가 실제로 볼 수 있도록 $가 제대로 인용되어 있는지 확인해야합니다. 명령 줄에서 "-rpath \ $ ORIGIN"을 입력하고 Makefile에서 "-rpath \ $$ ORIGIN"을 입력하십시오. –
Eclipse와 CDT를 사용하고 있으며 기타 링커 플래그 아래에 옵션을 넣을 것입니다. '-Wl, -rpath = $$ ORIGIN'을 넣었고 출력 창에 $로 표시됩니다. 그러나 그것은 효과가없는 것처럼 보입니다. 여러 변형을 시도했지만 아무 일도 일어나지 않습니다. 링커가 플래그를 무시하는 것과 같습니다. 나는 시도했다 : -Wl, -rpath = $ ORIGIN -Wl, - RPATH = $ ORIGIN -Wl, -rpath =/$ ORIGIN -Wl, -rpath = $ ORIGIN/ -Wl, -rpath =/$ ORIGIN/ 등 – CuppM
거기에 무엇이 있는지 보려면 elfdump 또는 해당 지역의 동일한 기능을 사용하십시오. ldd를 사용하고 그것이 무엇을 말하는지 보아라. – bmargulies