dynamic-linking

프로그램의 openat에 의해 열린 경로를 변경하려면 LD_PRELOAD를 사용하십시오.
dynamic-linking

프로그램의 openat에 의해 열린 경로를 변경하려면 LD_PRELOAD를 사용하십시오.

프로그램이 실제로 파일 시스템에서 여는 일부 경로로 경로를 변경하고 싶습니다. 그 이유는 프로그램을 병렬로 실행하고 싶지만 해당 프로그램이 이를 /tmp/somedir/임시 디렉터리로 사용하고 병렬 인스턴스에서 충돌이 발생하기 때문입니다. 나는 트릭을 수행하는 훌륭한 답변을 찾았습니다.프로세스의 특정 경로를 위조하는 것이 가능합니까?. 안타깝게도 이것이 cat광고에는 작동하지만 내 프로그램에는 작동하지 않습니다. 그 이유는 프로그램이 C++ API를 사용하기 때문이라고 생각합니다. 재현하기 위해 먼저...

Admin

Linux so 규칙: .so 링크가 개발 패키지에서 나오나요?
dynamic-linking

Linux so 규칙: .so 링크가 개발 패키지에서 나오나요?

내 Ubuntu jammy Linux PC에서 apt-get install libuv1libuv1 패키지( )를 설치한 후 다음과 같은 이름의 파일 libuv.so.1.0.0과 다음 이름의 심볼릭 링크 가 있음을 확인했습니다 libuv.so.1. $ find /usr -name "libuv.so*" 2>/dev/null /usr/lib/x86_64-linux-gnu/libuv.so.1.0.0 /usr/lib/x86_64-linux-gnu/libuv.so.1 $ ls -l /usr/lib/x86_...

Admin

공유 라이브러리 변경
dynamic-linking

공유 라이브러리 변경

공유 라이브러리를 사용하는 C 프로그램이 있다고 가정해 보겠습니다. 공유 라이브러리를 변경하고 다시 빌드하면 해당 라이브러리를 사용하는 모든 프로그램은 다음에 실행될 때 자동으로 해당 변경 사항을 받게 됩니다. 정적 라이브러리의 경우 변경 사항은 프로그램이 새 버전의 라이브러리로 다시 컴파일된 후에만 표시됩니다. 일부 공유 라이브러리 함수의 코드를 변경하거나(메서드 시그니처를 변경하지 않고) 새 함수를 추가하는 등의 경우 함수의 주소가 변경됩니다. 공유 라이브러리를 사용하는 프로그램이 재컴파일이나 재...

Admin

AIX의 런타임 라이브러리 검색 순서
dynamic-linking

AIX의 런타임 라이브러리 검색 순서

내가 올바르게 이해했다면 변수 LIBPATHsum은 LD_LIBRARY_PATH링커의 매개변수보다 우선순위가 더 높습니다 -blibpath. 컴파일 중에 지정된 경로(즉 -blibpath, 다른 경로)를 따라 라이브러리를 검색하도록 로더에 지시하는 방법을 찾고 있습니다 . 예를 들어 Linux에는 -rpath변수보다 우선순위가 높은 가 있습니다. AIX에서 에뮬레이션을 찾고 있습니다. 또한 AIX에서 라이브러리를 찾는 경로의 우선순위를 명확하게 설명할 수 있는 곳을 찾고 있습니다. ...

Admin

gdbus 기호 조회 오류
dynamic-linking

gdbus 기호 조회 오류

저는 아치리눅스를 사용하고 있습니다. 최근 업데이트 후 gdbus가 작동하지 않고 기호 조회 오류가 발생하는 것을 발견했습니다. ➜ tidedra@ZgrArch ~ gdbus gdbus: symbol lookup error: /usr/lib/libgobject-2.0.so.0: undefined symbol: g_string_free_and_steal 그러다가 라이브러리 버전의 문제가 아닐까 생각하여 관련 파일의 링크 라이브러리를 확인해 보았습니다. ➜ tidedra@ZgrArch ~ ldd...

Admin

chroot에서 최신 bash를 사용하려면 LD_LIBRARY_PATH를 해킹하세요.
dynamic-linking

chroot에서 최신 bash를 사용하려면 LD_LIBRARY_PATH를 해킹하세요.

bashfrom 의 최신 버전을 얻으려고 합니다 LinuxMint. 내 상자에 하나 있어요 chroot.Debian Sid bash초기에 래퍼 스크립트에서 하려고 했던 작업PATH #!/bin/bash LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux-gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/l...

Admin

".so" 라이브러리에 대한 연결 순서 제공
dynamic-linking

".so" 라이브러리에 대한 연결 순서 제공

.soR에서 여러 공유 라이브러리 에 동적으로 연결해야 합니다 . R은 dyn.load공유 객체의 파일 경로를 가져오는 이 함수를 사용하여 한 번에 이 작업을 수행할 수 있습니다. 그러나 아직 로드하지 않은 다른 공유 라이브러리에 종속된 공유 라이브러리를 로드하면 연결이 실패합니다. 따라서 올바른 순서로 링크할 수 있도록 공유 라이브러리 목록의 종속성에 대한 토폴로지 순서를 가져와야 합니다. 나는 깨닫는다할 수 있는이 정보는 각 공유 라이브러리에서 실행하고 결과를 구문 분석하여 추출되지만 ldd, 간...

Admin

AppImage 도구는 포함할 .so 파일을 어떻게 결정합니까? 다른 배포판에서 다른 .so 파일 포함 목록이 생성되는 이유는 무엇입니까?
dynamic-linking

AppImage 도구는 포함할 .so 파일을 어떻게 결정합니까? 다른 배포판에서 다른 .so 파일 포함 목록이 생성되는 이유는 무엇입니까?

두 개의 서로 다른 Linux 배포판에서 Qt 프로젝트를 컴파일하고 생성했습니다 .AppImage(Qt는 서로 다른 방식으로 설치되었습니다). 두 출력에는 .AppImage서로 다른 .so파일이 포함되어 있습니다. 둘 다 .AppImage실행됩니다. 나는 알고 싶다: AppImage 도구는 포함할 라이브러리를 어떻게 결정합니까? .AppImage두 파일에 서로 다른 라이브러리가 포함되어 있고 둘 다 실행되는 이유는 무엇입니까 ? 둘 중 하나(또는 둘 다)가 100% 작동하지 않습니까? 다양한 Li...

Admin

시스템 호출 기능은 실행 파일에 어떻게 연결됩니까?
dynamic-linking

시스템 호출 기능은 실행 파일에 어떻게 연결됩니까?

단일 시스템 호출로 특징지어지는 무의미한 프로그램을 작성한다고 가정해 보겠습니다 open. #include <fcntl.h> void main() { int hi = open("does not exist", 0); } 프로그램을 컴파일하고 ldd출력에 대한 명령을 실행하면 다음과 같은 결과가 나타납니다. linux-vdso.so.1 (0x00007ffddd741000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6835...

Admin

_init와 _start의 차이점은 무엇입니까?
dynamic-linking

_init와 _start의 차이점은 무엇입니까?

DT_INIT 동적 항목이 초기화 함수로 _init를 가리키더라도 _start가 먼저 실행됩니다. 누군가 나에게 DT_INIT의 목적을 설명해 줄 수 있습니까? _start 기호가 항상 진입점이므로 아무런 효과가 없는 것 같습니다. ...

Admin

로드된 공유 라이브러리의 위치 찾기
dynamic-linking

로드된 공유 라이브러리의 위치 찾기

저는 Oracle 클라이언트 라이브러리를 사용하는 C 프로그램을 유지 관리하고 있습니다. 대부분의 경우 이러한 라이브러리는 ORACLE_HOME환경 변수가 설정될 것으로 예상하며 환경 변수 없이는 작동하지 않습니다. putenv(3)우리의 경우 변수의 값은 항상 공유 라이브러리 자체의 위치에서 발생하며 C 코드에서 설정( 을 사용하여)을 구현하려고 합니다 . 하지만 이렇게 하려면 프로그램에서 사용하는 특정 공유 라이브러리가 어디서 로드되는지 알아야 합니다. 따라서 ldd실행 파일에 적용하면 출력은 다...

Admin

apt 패키지 - 정적 라이브러리 및 동적 라이브러리
dynamic-linking

apt 패키지 - 정적 라이브러리 및 동적 라이브러리

우분투 18.04를 사용합니다. 나는 apt를 사용하여 라이브러리를 설치합니다. 예를 들면 다음과 같습니다. sudo apt install freeglut3-dev apt는 항상 동적 라이브러리를 설치합니까, 아니면 패키지에 정적 또는 동적 라이브러리가 포함되어 있는지 확인할 수 있습니까? ...

Admin

"LD_LIBRARY_PATH 내보내기"가 설정된 경우에도 공유 라이브러리를 찾을 수 없습니다.
dynamic-linking

"LD_LIBRARY_PATH 내보내기"가 설정된 경우에도 공유 라이브러리를 찾을 수 없습니다.

여기에 이상한 문제가 있습니다. 일부 라이브러리가 필요한 QT 애플리케이션이 있습니다. 일반적으로 다음 bash 스크립트가 작동합니다. #!/bin/bash export LD_LIBRARY_PATH="./libs" export QT_DEBUG_PLUGINS=1 ./dataUI "$@" #This is the name of the APP 내 컴퓨터(Ubuntu 18) 및 다른 장치(QT IDE가 장착되지 않음)에서 WSL과 작동합니다. 그러나 누군가 스크립트를 실행하면 "./libs" 폴더에 있는 ...

Admin

기존 .so 파일이 존재하더라도 로드할 수 없는 현상, Docker 호스트 OS에 종속적인 것으로 보입니다.
dynamic-linking

기존 .so 파일이 존재하더라도 로드할 수 없는 현상, Docker 호스트 OS에 종속적인 것으로 보입니다.

Alma8 기반 Docker 컨테이너에 Qt6을 구축했으며 Docker 호스트는 Fedora 35입니다. 어떤 경우에는(아래 설명) 모든 Qt 라이브러리가 로드되지 않습니다 libQt6Core.so[.6[.2.4]]. 그러나 파일이 존재하고 올바른 디렉토리에서 검색됩니다. libQt6Dbus.so예를 들어 다른 Qt 라이브러리를 찾아 로드합니다. 광범위한 디버깅, 재구축, 웹 검색을 통해 근본 원인이 무엇인지, 어떻게 해결할 수 있는지에 대한 단서를 얻지 못했습니다. 포지셔닝 문제 문제의 범위를 다음...

Admin

libfoo의 버전 이름은 있지만 libfoo.so가 없는 경우 -lfoo와 연결하는 방법
dynamic-linking

libfoo의 버전 이름은 있지만 libfoo.so가 없는 경우 -lfoo와 연결하는 방법

libfoo가 포함되어 있다고 가정합니다 /usr/lib/x86_64-linux-gnu/. libfoo.so.2-> libfoo.so.2.0.0(심볼릭 링크) libfoo.so.2.0.0 특히 빠진 것은 libfoo.so. /usr/local/bin/sillyprog이와 같은 것을 사용하는 프로그램이 있다고 가정해 보겠습니다 gcc somefile.c -lfoo. 그것을 사용하려고 할 때마다 그것이 없기 때문에 sillyprog실패합니다 ./usr/bin/ld: cannot find -lfo...

Admin