2012-08-31 39 views
6

Tôi đang viết một thư viện đa nền tảng đơn giản sử dụng OpenMP nhưng tôi không thể tìm ra cách thử nghiệm nó trong một ứng dụng iPhone.
Tôi đang chạy OS X, với GCC 4.7, tôi biên dịch nó dưới dạng thư viện tĩnh, tôi cũng đã liên kết nó với libgomp.a và thêm nó vào ứng dụng thử nghiệm của tôi trong Xcode. App được xây dựng mà không cần bất kỳ lỗi hoặc cảnh báo nhưng khi tôi chạy nó trong trình giả lập iPhone tất cả tôi nhận được là thông báo lỗi này:Biên dịch thư viện tĩnh cho iOS sử dụng OpenMP

dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address 
    Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib 
    Expected in: /usr/lib/libSystem.B.dylib 

dyld: Symbol not found: ___emutls_get_address 
    Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib 
    Expected in: /usr/lib/libSystem.B.dylib 

tôi đọc rằng có một lỗi trong phiên bản trước của GCC với ___emutls_get_address, nhưng nó phải là cố định ngay bây giờ. Bạn có bất kỳ ý tưởng gì có thể sai?

+0

Bạn đã liên kết các tệp tiêu đề của mình chưa? Có thể frating một khuôn khổ "giả" như Trân trọng bưu thiếp và những người khác làm sẽ giúp ... – Ondrej

Trả lời

2

Tìm kiếm thư viện động không tồn tại. Vì bạn không thể sử dụng thư viện động trên thiết bị thực tế, nó sẽ thất bại trên thiết bị nhưng không thành công trong quá trình xây dựng. Bạn nên cố gắng xây dựng lại thư viện dưới dạng tệp .a theo cách thủ công và đảm bảo bạn không sử dụng bất kỳ đối số -l nào. Đó là điều tốt nhất tôi có cho bạn. Giả sử điều này là không jailbroken (có thể đúng), bạn sẽ cần phải chỉ cần liên kết nó bằng tay. Bạn luôn có thể thêm các tệp mã thư viện vào dự án của mình.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan