Tôi có một chương trình (cụ thể là mục nhập của tôi cho SO DevDays Countdown app challenge) dựa trên một số thư viện động, cụ thể là libSDL, libSDL_ttf và các thư viện khác. Tôi có các thư viện này được cài đặt theo /opt/local/lib
qua MacPorts và nhiều người sẽ không cài đặt các thư viện này (và một số có thể đã cài đặt chúng nhưng không được cài đặt ở vị trí đó).Cách phân phối Mac OS X với các thư viện phụ thuộc?
Làm cách nào để phân phối chương trình của mình để những người không có các thư viện này được cài đặt có thể chạy chương trình này? Rõ ràng tôi sẽ phải phân phối các tập tin .dylib
khác nhau, nhưng làm điều này là không đủ. Trình tải động vẫn tìm các thư viện được cài đặt tại các vị trí tôi đã cài đặt chúng tại. Có cách nào để nói cho bộ tải động để tìm trong thư mục hiện hành của thực thi, giống như những gì Windows không với DLL? Mọi người không cần phải sửa đổi bất kỳ biến môi trường nào (ví dụ: DYLD_LIBRARY_PATH
), vì tôi lại muốn điều này hoạt động ngoài hộp.
Sau khi suy nghĩ về nó, tôi nghĩ rằng tôi sẽ đi với liên kết tĩnh để phân phối. Nếu tôi sẽ phân phối các thư viện động anyways, mà đánh bại một số mục đích của việc sử dụng chúng, vì vậy tôi cũng có thể tránh được nỗi đau của đối phó với bộ nạp động. –
4. sử dụng tùy chọn 2. ở trên, đặt các khung bên trong gói .app của bạn (tệp .dmg) và thay đổi đường dẫn các nhu cầu thực thi với install_name_tool. Dưới đây là một số ví dụ về cách install_name_tool được sử dụng: http://qt-project.org/doc/qt-4.8/deployment-mac.html. Dietrich, bạn có thể kết hợp điều này vào câu trả lời của bạn được không? –
@ MilanBabuškov: Có vẻ như điều này đã được đưa vào câu trả lời dưới đây. Tôi thấy không cần sao chép thông tin. –