【问题标题】:clang: error: linker command failed with exit code 1 coming only on deviceclang:错误:链接器命令失败,退出代码 1 仅出现在设备上
【发布时间】:2015-12-27 19:28:07
【问题描述】:

当我尝试在设备上测试我的应用时,出现以下错误。错误不会出现在模拟器中。我正在使用 xcode 7。有人可以帮忙吗?

架构 armv7 的未定义符号:“_PKCS5_PBKDF2_HMAC_SHA1”, 参考自: sqlcipher.a(sqlite3.o) "_HMAC_CTX_init" 中的_sqlcipher_cipher_ctx_key_derive,引用自: sqlcipher.a(sqlite3.o) "_HMAC_Init_ex" 中的 _sqlcipher_page_hmac,引用自: sqlcipher.a(sqlite3.o) "_HMAC_Final" 中的 _sqlcipher_page_hmac,引用自: sqlcipher.a(sqlite3.o) "_HMAC_CTX_cleanup" 中的_sqlcipher_page_hmac,引用自: sqlcipher.a(sqlite3.o) "_RAND_bytes" 中的 _sqlcipher_page_hmac,引用自: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) sqlcipher.a(sqlite3.o) "_HMAC_Update" 中的_sqlcipher_codec_ctx_init,引用自: sqlcipher.a(sqlite3.o) "_EVP_CIPHER_CTX_set_padding" 中的_sqlcipher_page_hmac,引用自: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_CipherInit",引用自: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_CipherFinal",引用自: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_get_cipherbyname",引用自: _sqlcipher_codec_ctx_set_cipher 在 sqlcipher.a(sqlite3.o) _sqlcipher_activate in sqlcipher.a(sqlite3.o) "_OPENSSL_add_all_algorithms_noconf",引用自: sqlcipher.a(sqlite3.o) "_EVP_MD_size" 中的_sqlcipher_activate,引用自: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) "_EVP_sha1",引用自: _sqlcipher_codec_ctx_set_cipher 在 sqlcipher.a(sqlite3.o) sqlcipher.a(sqlite3.o)“_EVP_CIPHER_key_length”中的_sqlcipher_page_hmac,引用自: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) "_EVP_CipherUpdate",引用自: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_CIPHER_iv_length",引用自: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) "_EVP_CIPHER_CTX_cleanup",引用自: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_CIPHER_block_size",引用自: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) ld:未找到架构 armv7 clang 的符号:错误:链接器 命令失败,退出代码为 1(使用 -v 查看调用)

【问题讨论】:

  • 设备是否更新到iOS 9.0
  • 是的,设备已更新到 iOS 9.0

标签: ios xcode linker linker-errors xcode7


【解决方案1】:

这些是 OpenSSL 符号,因此您可能没有链接到 libcrypto。将 -lcrypto 添加到链接器标志。

【讨论】:

  • 我已将 -lcrypto 添加到链接器标志中,但仍然出现相同的错误。
【解决方案2】:

“Undefined symbols for architecture armv7”的常见原因是:

  1. 您导入了标头,但未链接到正确的库。这很常见,尤其是对于像 QuartzCore 这样的库的头文件,因为默认情况下它不包含在项目中。解决方法:

    • 在 Build Phases 的 Link Binary With Libraries 部分添加正确的库。

    • 1234563到 Build Settings 的 Other Linker Flags 部分。
  2. 您将文件复制到项目中,但忘记检查要添加文件的目标。解决方法:

    • 打开正确目标的构建阶段,展开编译源并添加缺少的 .m 文件。

您包含一个静态库,该库是为另一个架构(如 i386)构建的,即主机上的模拟器。解决方法:

如果您有多个库供应商提供的库文件要包含在项目中,您需要包含一个用于模拟器 (i386) 和一个用于设备(​​例如 armv7)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多