ค้นหาห้องสมุดเพิ่มทั้งหมด:
$ otool -L exefile
exefile:
@executable_path/libboost_something.dylib (compatibility version 0.7.0, current version 0.7.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
และสำหรับแต่ละคนlibboost_xxx.dylib
ให้ทำ:
$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile
และสุดท้ายยืนยันการใช้otool
อีกครั้ง:
$ otool -L exefile
exefile:
/opt/local/lib/libboost_something.dylib (compatibility version 0.7.0, current version 0.7.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
manpages: otool
install_name_tool
แก้ไขสักครู่ฉันก็เขียนสคริปต์ไพ ธ อน ( copy_dylibs.py
) เพื่อทำงานทั้งหมดนี้โดยอัตโนมัติเมื่อสร้างแอป มันจะแพคเกจค่าไลบรารีทั้งหมดจาก/usr/local
หรือ/opt/local
ลง app @rpath
มัดและแก้ไขปัญหาการอ้างอิงไปยังห้องสมุดเหล่านั้นไปใช้ ซึ่งหมายความว่าคุณสามารถติดตั้งไลบรารีบุคคลที่สามได้อย่างง่ายดายโดยใช้ Homebrew และจัดทำแพ็กเกจให้ง่าย
ฉันได้ทำในขณะนี้ประชาชนสคริปต์นี้บนGitHub