libname.so naming 컨벤션을 따르지 않는 라이브러리에 대해 -l 또는 하드 코딩 경로없이 GCC를 사용하는 방법은 무엇입니까?
-
03-07-2019 - |
문제
실행 파일을 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
제휴하지 않습니다 StackOverflow