TL; DRLàm cách nào để Xcode liên kết và gỡ lỗi ứng dụng bằng Hệ thống tập tin tăng cường?
Ứng dụng mục tiêu-C được liên kết với thư viện tĩnh có liên kết động Boost Systemystem. Ứng dụng có thể chạy từ thư mục đầu ra bằng cách sử dụng Terminal, nhưng cố gắng chạy từ trình gỡ lỗi Xcode hoặc Finder cung cấp lỗi dyld: Library not loaded: libboost_filesystem.dylib <snip> Reason: image not found
.
Vấn đề
Trong dự án Xcode của tôi, tôi có một cấu trúc trông như thế này:
MainProject (Objective-C)
- static_lib_that_uses_filesystem (C++)
Để có được tất cả mọi thứ để liên kết, tôi đã thêm libboost_system và libboost_filesystem dylibs vào "Liên kết Binary với Libraries "giai đoạn xây dựng trong MainProject.
Khi tôi cố gắng để chạy các ứng dụng từ một trong hai Xcode hoặc Finder tôi nhận được:
sharedlibrary apply-load-rules all
warning: Unable to read symbols for libboost_filesystem.dylib (file not found).
warning: Unable to read symbols from "libboost_filesystem.dylib" (not yet mapped into memory).
warning: Unable to read symbols for libboost_system.dylib (file not found).
warning: Unable to read symbols from "libboost_system.dylib" (not yet mapped into memory).
[Switching to process 43957 thread 0x0]
dyld: Library not loaded: libboost_filesystem.dylib
Referenced from: /Users/ssteele/Library/Developer/Xcode/DerivedData/MainProject-dqrhyuarllykslftblocjdzxlran/Build/Products/Debug/MainProject.app/Contents/MacOS/MainProject
Reason: image not found
tôi đã thêm một xây dựng sân khấu để sao chép dylibs vào thư mục Khung trong gói, điều này không giúp đỡ. Tôi đã thay đổi điều này để sao chép chúng vào thư mục Executables cũng không hữu ích.
Có chúng trong thư mục Executables không cho phép tôi chạy ứng dụng từ Thiết bị đầu cuối.
Làm cách nào để ứng dụng có thể tìm thấy các dylib khi chạy từ Trình tìm kiếm/Xcode?
Background Thông tin
Tôi đang sử dụng Xcode 4.2 trên Lion và hiện đang nhắm mục tiêu Lion chỉ. Tôi đã xây dựng các thư viện chia sẻ của tôi cho hệ thống tập tin như thế này:
./b2 threading=multi macosx-version=10.7 --with-filesystem stage
Điều này tạo ra libboost_system.dylib, libboost_filesystem.dylib, và cũng .a tương đương trong giai đoạn/thư mục lib, tôi tham khảo chúng trong dự án trực tiếp từ đó .
Output từ otool -l bao gồm: 'tải lệnh 11 cmd LC_LOAD_DYLIB cmdsize 56 tên libboost_filesystem.dylib (bù đắp 24) thời gian tem 2 Thu Jan 1 01:00:02 1970 phiên bản hiện tại 0.0.0 phiên bản tương thích 0.0.0' –
Tôi tự hỏi nếu tên đó nên bao gồm một tham chiếu @ của một số loại, như '@ executable_path/libboost_filesystem.dylib' . Tôi dường như không thể làm điều đó xảy ra. –