簡體   English   中英

將ARMv7庫鏈接到ARMv7s應用

[英]Link ARMv7 library to ARMv7s app

根據文獻,A6處理器將執行ARMv7代碼。 我的項目鏈接失敗,因為一個庫是為ARMv7構建的,但是該應用程序是為ARMv7s構建的。

典型的消息是(當我連接iPad 4(Retina)或iPhone 5時):

ld: warning: ignoring file /usr/local/ssl/iphoneos/lib//fipscanister.o, file was built for armv7 which is not the architecture being linked (armv7s): /usr/local/ssl/iphoneos/lib//fipscanister.o
ld: warning: ignoring file /usr/local/ssl/iphoneos/lib//libcrypto.a, file was built for archive which is not the architecture being linked (armv7s): /usr/local/ssl/iphoneos/lib//libcrypto.a

Undefined symbols for architecture armv7s:
  "_FIPS_incore_fingerprint", referenced from:
      _FINGERPRINT_premain in fips_premain.o
  "_FIPS_signature", referenced from:
      _FINGERPRINT_premain in fips_premain.o
  "_FIPS_text_start", referenced from:
      _FINGERPRINT_premain in fips_premain.o
ld: symbol(s) not found for architecture armv7s

我知道我可以通過從有效架構(VALID_ARCHS)中刪除ARMv7來解決此問題,但是我不確定原因,因為A6處理器可以執行A5目標代碼。 或者,我可以為ARMv7s體系結構執行庫的其他構建,但這需要更多工作,並且需要不同的磁盤目錄結構。

將ARMv7庫與ARMv7s應用程序鏈接是否有魔術?

Xcode郵件列表上的Jim Grosbach,鏈接器開關-allow_sub_type_mismatches應該允許ld繼續進行鏈接。 從蘋果的ld手冊頁中

 -allow_sub_type_mismatches
             Normally the linker considers different cpu-subtype for ARM
             (e.g. armv4t and armv6) to be different different architec-
             tures that cannot be mixed at build time.  This option
             relaxes that requirement, allowing you to mix object files
             compiled for different ARM subtypes.

還有一個Changelog條目 ,其中詳述了稱為LD_ALLOW_CPU_SUBTYPE_MISMATCHES的環境變量。

但是,我發現-allow_sub_type_mismatches根本無法在Xcode 4.5.2上運行。 抓住網絡即可看到一些Apple RADAR的-allow_sub_type_mismatches 參見,例如,radar:// 6134468。

希望它現在已經修復,但是當涉及到蘋果及其缺陷軟件時,沒有什么讓我感到驚訝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM