2009-09-21 31 views
102

Tôi nhận được lỗi này khi xây dựng ứng dụng iPhone của tôi:Build Lỗi - thiếu i386 kiến ​​trúc cần thiết trong tập tin

ld: warning: in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit, missing required architecture i386 in file

Nó đi cùng cho tất cả các khuôn khổ trong ứng dụng của tôi. Nó rất lạ vì điều này đã không xảy ra trước đó.

+0

Điều này có xảy ra sau khi bạn cài đặt Snow Leopard và iPhone SDK mới (Xcode 3.2) không? – avocade

+8

Câu trả lời của tôi khắc phục sự cố. Hãy kiểm tra. – Jordan

+9

Một khả năng khác không được thảo luận trong câu trả lời là bạn sẽ gặp phải lỗi này nếu bạn đã thêm tham chiếu vào một khung công tác không phổ quát (tức là bạn đã thêm khung armv6/armv7 rồi cố gắng tạo mô phỏng). Đây chủ yếu là một mối quan tâm nếu bạn đã xây dựng các khung tùy chỉnh của riêng mình. – aroth

Trả lời

1

Chạy tập tin lệnh trên khung làm việc từ Terminal:

file /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit 

Bạn sẽ nhận lại một thông báo cho biết đó kiến ​​trúc nhị phân UIKit tương thích với. Nếu bạn không thấy "i386" được liệt kê, thì bạn đã quản lý bằng cách nào đó để loại bỏ phiên bản i386 của UIKit, điều này có nghĩa là bạn không thể xây dựng cho trình mô phỏng. Để khắc phục điều đó, bạn sẽ phải cài đặt lại SDK.

Nếu bạn gặp phải một số lỗi khác, hy vọng nó sẽ giúp bạn tìm ra vấn đề thực tế là gì.

+0

Cài đặt lại sdk và I vẫn gặp lỗi xây dựng chính xác. –

+1

không cần cài đặt lại sdk dude – Radix

+0

Tôi đang gặp sự cố này. đã kiểm tra khung và đường dẫn thư viện và chúng được sạch sẽ. tệp lệnh /Developer/Platforms .../UIKit.framework/UIKit chỉ nói "Mach-O được liên kết động với thư viện được chia sẻ liên kết". là nó thực sự cần thiết để cài đặt toàn bộ SDK ?, hoặc tôi có thể sao chép phiên bản đầy đủ của khuôn khổ? –

5

Mặc dù có thể có điều gì đó đã bị xóa, đó là kinh nghiệm của tôi rằng một cái gì đó bị vướng vào tệp dự án. Tôi chưa xác định được thứ gì đó "cái gì". Tôi đã có vấn đề tương tự khi cài đặt SDK là tốt. Có một vài sự lựa chon.

Trước tiên, thêm tất cả các tệp của bạn vào một dự án mới. Điều này dường như thường hoạt động. Một loại đau đớn, mặc dù.

Thứ hai, bạn có thể nhấp chuột phải vào dự án trong Đường dẫn tìm kiếm thông tin/XCode/Get Info/Build/Library. Thêm đường dẫn mới tương tự như /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/lib. Thêm các phiên bản thích hợp của chuỗi đó cho mỗi phiên bản (2.2.1, v.v.) và nền tảng (mô phỏng hoặc iPhoneOS). Thực hiện một hành động tương tự cho Khung tìm kiếm khung nếu khung là vấn đề của bạn.

Thứ ba, đó là công việc nhiều hơn nhưng đáng tin cậy hơn, là để mở project.pbxproj từ bên trong MyProject.xcodeproj (Textmate là tốt cho việc này). Tìm "/ * Bắt đầu phần XCBuildConfiguration * /", sau đó "LIBRARY_SEARCH_PATHS" và "FRAMEWORK_SEARCH_PATHS". Thêm hoặc sửa đổi đường dẫn khi thích hợp và lưu tệp.

Trong mọi trường hợp, một cơn đau ở mông và tôi chắc chắn muốn xác định nguyên nhân vì tôi đã xảy ra điều này một vài lần. Dự án xây dựng tốt, sau đó chỉ cần lên và từ chối làm như vậy với những gì có vẻ là lý do nhỏ.

+0

Tôi sẽ bắt đầu một dự án mới. Oh wells. –

+0

Bạn có thể sửa các cài đặt xây dựng "Đường dẫn tìm kiếm khung" từ bảng thông tin của mục tiêu. –

+0

Tôi gặp lỗi nhưng không có vấn đề về khuôn khổ được mô tả ở trên. Thật kỳ lạ, trên một máy tính, dự án có thể được kiểm tra của SVN và xây dựng tốt, trong khi trên hai người khác, nó đột nhiên dẫn đến lỗi này trên mọi công trình. Sửa chữa duy nhất (và khá đơn giản) - sau khi thử tất cả các loại giải pháp khác - là tạo một dự án trống mới và di chuyển tất cả các tệp vào đó. – mmattke

43

Điều đã xảy ra ở đây là Xcode đã thêm bí danh mục nhập "Đường dẫn tìm kiếm khung" trỏ đến SDK thiết bị iPhone cụ thể. Ví dụ: tôi gần đây đã được đặt thành:

$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks 

Điều này dẫn trình biên dịch tìm các khuôn khổ của kiến ​​trúc không chính xác. Việc xóa bất kỳ giá trị nào trong khóa "Đường dẫn tìm kiếm khung" trong cài đặt xây dựng của mục tiêu sẽ giải quyết vấn đề.

+0

đây là vấn đề trong trường hợp của tôi. nó đã thêm một loạt các thư mục tìm kiếm mỗi lần tôi thêm một thư viện mới. ngay cả khi tôi xóa tham chiếu mục nhập thư mục tìm kiếm được sử dụng ở đó đã gây ra sự cố. – darshansonde

+0

"Đường dẫn tìm kiếm khung" đã trống trong trường hợp của tôi. Lỗi chính xác tôi nhận được là ** ld: xây dựng cho Trình mô phỏng iOS, nhưng liên kết với dylib được tạo cho tệp MacOSX '/usr/lib/libSystem.B.dylib' cho kiến ​​trúc i386 clang: lỗi: lệnh liên kết không thành công khi thoát mã 1 (sử dụng -v để xem lời gọi) ** Tôi đang sử dụng SDK 7.0 trên Mavericks. – Ans

+0

Tôi đã có cùng một lỗi, tôi đã xóa các giá trị khỏi đường dẫn tìm kiếm khung trong phần Cài đặt xây dựng và giờ nó biên dịch thành công. – Nirav

85

Tôi đã gặp vấn đề tương tự này và giải pháp hóa ra là một sửa chữa dễ dàng. Sao lưu sau đó mở project.pbxproj (nằm bên trong gói tệp dự án của bạn) trong TextMate hoặc TextEdit và tìm kiếm phần có tiêu đề "/ * Bắt đầu phần XCBuildConfiguration * /". Tìm một khóa có tên FRAMEWORK_SEARCH_PATHS và xóa nó và nội dung của nó (một lần cho mỗi cấu hình xây dựng, vì vậy tôi đã xóa nó ở hai nơi). Dưới đây là ví dụ về những gì tôi đã xóa:

FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", 
"\"$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library/Frameworks\"",); 

Dự án của tôi hiện đang xây dựng cho cả thiết bị iPhone và iPhoneSimulator.

+2

Tôi có thể xác minh rằng thao tác này được mô tả. Có vẻ như Xcode có thể dễ dàng liên lạc với siêu dữ liệu của nó khi di chuyển Xcode projs giữa các máy tính khác nhau; trong trường hợp này với một bản có 3.0 và Leopard, còn phiên bản 3.1 và Snow Leopard khác được cài đặt. Siêu dữ liệu FRAMEWORK_SEARCH_PATHS hiển thị dưới dạng trống trong Cài đặt xây dựng trong khi project.pbxproj thực tế có nội dung trong đó. – avocade

+1

Đồng ý FRAMEWORK_SEARCH_PATHS cũng hiển thị trống trong cài đặt bản dựng cho tôi. Tuy nhiên, việc chỉnh sửa thủ công tệp project.pbxproj như được mô tả đã khắc phục sự cố. –

+11

Điều này không hiệu quả đối với tôi. BAO GIỜ, bạn dẫn tôi đến đúng nơi để xem. My .pbxproj không có khóa FRAMEWORK_SEARCH_PATHS, nhưng khóa có tên LIBRARY_SEARCH_PATHS. –

10

Tôi chỉ muốn đề cập rằng trong XCode nếu bạn chuyển đến "Chỉnh sửa cài đặt dự án" và tìm "Đường dẫn tìm kiếm" Có một trường cho "Đường dẫn tìm kiếm khung". Cập nhật điều này sẽ khắc phục được sự cố, mà không cần phải hack tệp dự án!

Chúc mừng!

Jesse

+0

Tôi có cùng một vấn đề đó là lái xe cho tôi hoàn toàn điên rồ. Có vẻ như các bạn biết giải pháp nhưng tôi không thể tìm thấy tệp "project.pbxproj" và không thể tìm thấy vị trí "Chỉnh sửa cài đặt dự án". – saman01

+2

Trong XCode 4.2.1, tôi thấy điều này như sau: bấm vào tên dự án trong Project Navigator. Trong màn hình thuộc tính xuất hiện, chọn tab 'Cài đặt Xây dựng'. Đường dẫn tìm kiếm được đặt trong màn hình này. Xóa chúng đã hiệu quả với tôi. – dsteele

1

Tôi chỉ muốn cho bạn biết rằng Trong trường hợp của tôi, tôi đã có cùng một vấn đề, tôi nhận ra rằng tôi đã có một thư mục Xcode cũ gọi Xcode3.1.3 Tôi chỉ đổi tên nó bởi vì nó là một cũ phiên bản và điều đó đã làm điều kỳ diệu đối với tôi.

8

Kiểm tra xem bạn đã không sao chép khung công tác vào dự án của mình khi bạn thêm nó vào. Nếu bạn đã sao chép nó, nó không thể tìm thấy các đường dẫn ban đầu. Để khắc phục vấn đề này. Xóa khung công tác AVFoundation khỏi thư mục khung công tác của bạn trong dự án của bạn, sau đó thêm lại nó, nhưng lần này, hãy chắc chắn rằng bạn không đánh dấu kiểm tra bản sao.

Điều này đã khắc phục sự cố cho tôi!

4

"Chỉnh sửa cài đặt dự án" và tìm "Đường dẫn tìm kiếm" Có một trường cho "Đường dẫn tìm kiếm khung". xóa hết!!

+1

các trường đó đã trống. Tôi vẫn nhận được lỗi như vậy. –

1

Kiểm tra đường dẫn tìm kiếm trong thư viện trong cài đặt đích của bạn. Đôi khi thư viện goofy được nhập vào đó và điều này sẽ cung cấp cho bạn một lỗi tương tự.

Bạn có thể xóa tất cả các mục nhập trong phần này.

128

Điều này xảy ra khi bạn thêm khung làm việc cho dự án của mình và vô tình sao chép khuôn khổ vào thư mục dự án của bạn.

Khắc phục là kiểm tra thư mục dự án của bạn (nơi bạn lưu trữ dự án của mình trên đĩa) cho bất kỳ tệp SDK SDK * .ramework nào và xóa chúng.

Dự án sẽ xây dựng tốt sau đó.

+4

ngoài ra, kiểm tra nó trên thiết bị iOS thay vì Simulator. – Raptor

+0

Nếu bạn có một khung công tác khác thì việc sửa đổi tệp dự án có vẻ như xóa tham chiếu đến điều đó, điều này làm việc tho, và dễ dàng hơn, nhờ Jordan – texian

-1

Tôi cũng gặp lỗi tương tự khi sử dụng phiên bản xcode 4.0.2 nên tôi đã chọn tệp dự án xcode và từ mục i đã chọn tùy chọn Mục tiêu của tôi, tôi có thể xem ứng dụng dự án của tôi đã đi đến tùy chọn cài đặt bản dựng.

của họ trong các tùy chọn tìm kiếm tôi gõ Khung đường dẫn tìm kiếm, và xóa tất cả các thiết lập và sau đó nhấp vào nút xây dựng và làm việc cho tôi tốt,

Cảm ơn và chúc

4

Nó cũng đã xảy ra ở đây với tôi. Nhờ một đối tác tuyệt vời, chúng tôi đã tìm thấy câu trả lời. Xcode của bạn có thể trỏ đến trình mô phỏng .. thay đổi nó thành thiết bị iOS thay thế ..hoàn thiện sau ....

5

Nếu ứng dụng của bạn có nghĩa là chạy trên thiết bị, hãy đảm bảo bạn không cố gắng chạy nó trên giả lập. Có thể âm thanh rõ ràng, nhưng kiểm tra anyway.

8

I fixed it in a different way.The reason why i was getting this error was that i added security.framework twice in my project.I was not able to see security framework in xcode ,i opened the project in finder and found this framework which i deleted and problem solved.

0

Tôi vừa trải nghiệm một điều gì đó hơi khác biệt, bởi vì tôi làm việc trên thư viện của riêng mình (WM_GSRecognizerLib), nhưng lỗi là như nhau.

Điều gì sẽ xảy ra: do một số cập nhật, đường dẫn nhắm mục tiêu đến lib cần đưa vào (.a) là từ thư mục "Debug-iphoneos" (nơi nó được tạo ra). Biên dịch cho các thiết bị iOS chung hoạt động tốt, nhưng không phải cho trình mô phỏng, phàn nàn về kiến ​​trúc i386 bị ​​thiếu.

Điều tôi đã làm cho vấn đề này, cũng bao gồm các tệp nhị phân từ thư mục "Debug-iphonesimulator".

Nó có thể giúp cho chủ đề này, bởi vì lời giải thích là ở đây: thiết bị yêu cầu nhị phân cho arm64/armv7/armv7s, trong khi trình mô phỏng cần i386.

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