libname.so naming 컨벤션을 따르지 않는 라이브러리에 대해 -l 또는 하드 코딩 경로없이 GCC를 사용하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/207069

문제

실행 파일을 GCC 사용과 연결하려는 공유 라이브러리가 있습니다. 공유 라이브러리에는 libname.so 양식이 아닌 비표준 이름이 있으므로 일반적인 -l 옵션을 사용할 수 없습니다. (또한 파이썬 확장자이기도하며 'lib'접두사도 없습니다.)

라이브러리 파일로의 경로를 링크 명령 줄로 직접 전달할 수 있지만 라이브러리 경로가 실행 파일로 하드 코딩됩니다.

예를 들어:

g++ -o build/bin/myapp build/bin/_mylib.so

경로를 실행 파일로 하드 코딩하지 않고이 라이브러리에 링크 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

라이브러리에 다른 이름을 줄 수있는 ":"접두사가 있습니다. 사용하는 경우

g++ -o build/bin/myapp -l:_mylib.so other_source_files

_mylib.so에 대한 경로를 검색해야합니다.

다른 팁

G ++가 호출되면 공유 라이브러리를 작업 디렉토리에 복사 할 수 있다면 다음이 작동합니다.

g++ -o build/bin/myapp _mylib.so other_source_files

UNIX 또는 Linux에 있다면 라이브러리를 원하는 디렉토리의 라이브러리에 대한 상징적 링크를 만들 수 있다고 생각합니다.

예를 들어:
ln -s build/bin/_mylib.so build/bin/lib_mylib.so

그런 다음 사용할 수 있습니다 -l_mylib

http://en.wikipedia.org/wiki/Symbolic_link

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top