DLLImport의 공유 객체가 런타임 시 찾는 소스 코드를 사용하는 Ubuntu Linux 16.04 데스크탑에서 실행되는 C# 실행 파일은 어디에 있습니까?

DLLImport의 공유 객체가 런타임 시 찾는 소스 코드를 사용하는 Ubuntu Linux 16.04 데스크탑에서 실행되는 C# 실행 파일은 어디에 있습니까?

DLLImport의 공유 개체가 런타임에 공유 개체를 찾는 소스 코드를 사용하는 Ubuntu Linux 16.04 Lenovo Thinkstation 데스크탑에서 실행되는 C# 실행 파일은 어디에 있습니까? 공유 개체 libxyz.so가 C# 실행 파일의 하위 디렉터리와 동일한 하위 디렉터리에 있더라도 올바른 C# 실행 프로그램 동작을 보장하려면 LD_LIBRARY_PATH를 내보내야 한다는 것을 알았습니다. 왜 이런가요?

많은 타사 Linux 소프트웨어 제품을 설치하는 동안 설치 프로그램이나 스크립트는 고객이 해당 하위 디렉터리가 포함된 LD_LIBRARY_PATH를 지정하지 않고도 하위 디렉터리 /usr/libx86_64-linux-gnu에서 libc.so.6을 찾을 수 있다는 사실을 확인했습니다. 왜 그럴까요?

또한 C# 실행 파일을 포인트 앤 클릭 모노 서비스로 실행하려는 경우 Ubuntu Linux 16.04 터미널을 열지 않고 컴퓨터가 재부팅될 때까지 LD_LIBRARY_PATH를 전역적으로 지정하려면 어떻게 해야 합니까? LD_LIBRARY_PATH를 execle에 envp 인수로 전달하는 것보다 더 우아한 방법이 있습니까?

답변1

나는 당신을 위해 이 질문의 세 부분 모두에 대답하려고 노력할 것입니다

[왜] 올바른 C# 실행 프로그램 동작을 보장하기 위해 LD_LIBRARY_PATH를 내보내야 합니다.

설치 프로그램 또는 스크립트는 고객이 LD_LIBRARY_PATH를 지정하지 않고도 하위 디렉토리 /usr/libx86_64-linux-gnu에서 libc.so.6을 찾습니다.

연결된 라이브러리는 알려진 위치 집합에서 참조됩니다. 일반적으로 이는 권한 있는 코드가 안전하게 사용할 수 있도록 하는 시스템 디렉터리입니다(사용자가 덮어쓸 수 없음).

이것을 이해하면 알려진 위치 집합에 가 포함될 수 없다는 것을 알게 됩니다 .. 텍스트 파일을 검사하여 알려진 위치 집합을 볼 수 있습니다 /etc/ld.so.conf. 이를 편집하는 경우 ldconfig해당 바이너리 데이터베이스를 업데이트하기 위해 실행해야 합니다.

LD_LIBRARY_PATH검색할 디렉터리 목록을 콜론으로 구분하여 사용하는 의 인스턴스를 사용하여 알려진 위치 집합을 애플리케이션별로 확장할 수 있습니다 . 하지만 이것을 사용하면 커널은 프로그램의 모든 권한을 삭제하므로 예 passwd를 들어 속임수를 쓰는 데 사용할 수 없습니다 sudo.

컴퓨터가 재부팅될 때까지 LD_LIBRARY_PATH를 전체적으로 지정하는 방법은 무엇입니까? [...] LD_LIBRARY_PATH를 execle에 envp 인수로 전달하는 것보다 더 우아한 방법이 있습니까?

sudo전역적으로 설정하면 , passwd및 기타 권한 있는 프로그램이 중단될 수 있으므로 정말 나쁜 생각입니다 . LD_LIBRARY_PATH하지만 왜 애플리케이션별로 쉘 스크립트를 설정할 수 없는지 모르겠습니다 . 터미널에 중요한 내용을 쓰지 않으므로 "터미널 프로그램"으로 시작할 필요가 없습니다.

#!/bin/bash
#
APP_DIR=/path/to/application
APP_DIR_LIB="$APP_DIR/lib"
APP_DIR_EXE="$APP_DIR/someprogram.exe"

export LD_LIBRARY_PATH="$APP_LIB_DIR"${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
exec "$APP_DIR_EXE" "$@"

echo "Ooops" >&2
exit 1

"$@"나는 스크립트에 전달된 모든 인수가 실행 파일 자체에 적용되도록 사용했습니다 .

모노 서비스를 어떻게 시작하거나 중지하는지 모르기 때문에 구체적인 내용에 대해서는 도움을 드릴 수 없습니다. 질문을 업데이트하면 여기에 추가할 수 있는 내용이 있는지 확인하겠습니다.

관련 정보