× - 코드 및 콘솔 화면은 [ code ] 내용 [ /code ] 태그 처리하여 주세요.
- 강조하고자 하는 내용은 [ b ] 내용 [ /b ] 태그 처리하여 주세요.

우분투와 CentOS의 linking 방식 차이점


  • ()
  • 's Avatar 이 글의 작성자
  • Visitor
  • Visitor
17 Apr 2022 05:28 - 23 May 2023 18:19 #13131 작성자:
님의 글: 우분투와 CentOS의 linking 방식 차이점
저는 두 개의 공유 라이브러리를 구축하고 있으며, 한 라이브러리(B)는 다른 라이브러리(A)에 의존하고 있으며, 둘 다 $ORIGIN/.의 rpath 구축되고 있으며, 실행 파일을 라이브러리 B에 연결합니다. 그래서 종속성은 다음과 같습니다:

실행 파일 C -> 라이브러리 B -> 라이브러리 A

우분투에서 A에 대한 B의 종속성은 를 사용하여 해결되는 반면, CentOS에서는 링커가 A를 찾을 수 없다고 경고하므로 실행 파일을 컴파일하는 동안 " 또는 rpath사용 시도"를 사용해야 합니다 .-rpath-rpath-link

다음은 문제를 재현하는 최소한의 예입니다.

mkdir testdir
echo 'void a() {}' > testdir/a.c
echo 'int a(); void b() { a(); }' > testdir/b.c
echo 'int b(); int main() { b(); }' > testdir/c.c
gcc testdir/a.c -shared -o testdir/liba.so -Wl,-rpath,'$ORIGIN/.' -fPIC
gcc testdir/b.c -Ltestdir -la -shared -o testdir/libb.so -Wl,-rpath,'$ORIGIN/.' -fPIC
gcc testdir/c.c -Ltestdir -lb -o testdir/a.out

이 문제를 일으키는 Ubuntu와 CentOS의 연결 동작 사이의 차이점은 무엇입니까? A 와 같은 것에 의존하지 않고 해결할 수 있도록 이것을 "고정"할 수 있는 방법이 있습니까 LD_LIBRARY_PATH?
Time to create page: 0.052 seconds
Powered by Kunena Forum