MacOS용 휴대용 바이너리 만들기
3361 단어 portablemacosdevelopment
psql
의 예를 사용하여 이식 가능하게 만드는 방법입니다.실행 파일 복사
# cp /Applications/Postgres.app/Contents/Versions/latest/bin/psql .
연결된 라이브러리 확인
# otool -L psql
psql:
/Applications/Postgres.app/Contents/Versions/13/lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.13.0)
/usr/lib/libedit.3.dylib (compatibility version 2.0.0, current version 3.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
psql이
libpq.5.dylib
에 종속되어 있음을 알 수 있습니다.필요한 dylib 복사
# cp /Applications/Postgres.app/Contents/Versions/latest/lib/libpq.5.13.dylib .
libpq.5.13.dylib의 종속성 확인
# otool -L libpq.5.13.dylib
libpq.5.13.dylib:
/Applications/Postgres.app/Contents/Versions/13/lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.13.0)
/Applications/Postgres.app/Contents/Versions/13/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
/Applications/Postgres.app/Contents/Versions/13/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
libssl.1.1.dylib , libcrypto.1.1.dylib 및 해당 종속성(있는 경우) 복사
# ls
libcrypto.1.1.dylib
libssl.1.1.dylib
libpq.5.13.dylib
psql
@loader_path/... 로 종속성 경로를 변경하려면 install_name_tool을 사용하십시오.
@loader_path에 대한 자세한 내용
install_name_tool -change /Applications/Postgres.app/Contents/Versions/13/lib/libssl.1.1.dylib @loader_path/libssl.1.1.dylib ./libpq.5.13.dylib
install_name_tool -change /Applications/Postgres.app/Contents/Versions/13/lib/libcrypto.1.1.dylib @loader_path/libcrypto.1.1.dylib ./libpq.5.13.dylib
install_name_tool -change /Applications/Postgres.app/Contents/Versions/13/lib/libcrypto.1.1.dylib @loader_path/libcrypto.1.1.dylib ./libssl.1.1.dylib
install_name_tool -change /Applications/Postgres.app/Contents/Versions/13/lib/libpq.5.dylib @loader_path/libpq.5.13.dylib ./psql
psql 실행 시도
이것을 Macos Catalina에서 실행하면 시스템에 의해 종료됩니다.
# ./psql
[1] 2490 killed ./psql
해당 바이너리가 서명되었지만 수정되어 서명 확인이 실패하기 시작했기 때문에 발생합니다.
코드 서명을 제거합시다
codesign --remove-signature *
바이너리가 서명되지 않은 경우 검역 플래그를 제거해야 할 수 있습니다.
xattr -d com.apple.quarantine *
다시 시도하십시오
# ./psql
psql (13.0, server 10.14)
Type "help" for help.
myname=#
작동합니다 👏
Postbird.app에서 이 기술을 사용합니다. - PostgreSQL용 무료 크로스 플랫폼 데스크톱 클라이언트
Reference
이 문제에 관하여(MacOS용 휴대용 바이너리 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/paxa/making-portable-binary-for-macos-3pdh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)