반응형
libNAME.so 명명 규칙을 따르지 않는 라이브러리의 -l 또는 하드코드 경로를 사용하지 않고 GCC를 사용하여 링크하려면 어떻게 해야 합니까?
GCC를 사용하여 실행 파일을 링크하는 공유 라이브러리가 있습니다.공유 라이브러리의 이름은 libNAME.so 형식이 아니기 때문에 일반 -l 옵션을 사용할 수 없습니다.(또한 Python 확장자이므로 '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
언급URL : https://stackoverflow.com/questions/207069/how-to-link-using-gcc-without-l-nor-hardcoding-path-for-a-library-that-does-not
반응형
'programing' 카테고리의 다른 글
Vue: v-모델이 정의되지 않았거나 기본/폴백 (0) | 2022.08.12 |
---|---|
어레이에 푸시해도 vue의 반응성이 트리거되지 않음 (0) | 2022.08.12 |
매니페스트 파일의 기본 클래스가 아닌 Jar에서 클래스를 실행하는 방법 (0) | 2022.08.12 |
vuex에서 콘텐츠를 가져오는 방법 (0) | 2022.08.12 |
실행 시간이 0인 루프 (0) | 2022.08.12 |